Ejecutar lector de procedimientos SQL

Ejecuta un procedimiento almacenado en una conexión con una base de datos y devuelve la tabla de datos que se ha originado a partir de la sentencia del procedimiento almacenado.

Disponibilidad de mandatos: IBM RPA SaaS e IBM RPA local

Sintaxis de script

El lenguaje de script de propiedad de IBM RPA tiene una sintaxis similar a otros lenguajes de programación. La sintaxis del script define la sintaxis del mandato en el archivo de script. Puede trabajar con esta sintaxis en la modalidad Script de IBM RPA Studio.

sqlReaderProcedure --connection(DbConnection) --name(String) [--parameters(String)] [--timeout(TimeSpan)] (DataTable)=value (Numeric)=rows (Numeric)=columns

Dependencias

Debe crear una conexión de base de datos con una serie de conexión válida. Utilice los mandatos siguientes según el sistema de gestión de bases de datos (DBMS) que utilice:

Nota:SQLite no da soporte a procedimientos almacenados.

Parámetro de entrada

La tabla siguiente muestra la lista de parámetros de entrada disponibles en este mandato. En la tabla, puede ver el nombre de parámetro al trabajar en la modalidad de script de IBM RPA Studioy su etiqueta equivalente de modalidad de diseñador.

Etiqueta de modalidad de Diseñador Nombre de modalidad de Script Obligatorio Tipos de variable aceptados Descripción
Conexión connection Required Database Connection Variable de conexión de base de datos.
Nombre name Required Text Nombre de un procedimiento almacenado. El procedimiento especificado debe existir en la base de datos.
Parámetros Parameter Optional Text Parámetros del procedimiento almacenado. Debe rellenar los campos:

Parámetros: Nombre del parámetro.
Valor: El valor que se va a pasar al parámetro.
tiempo de espera timeout Optional Time Span, Number, Text El tiempo máximo de espera para ejecutar el mandato. El tiempo de espera predeterminado es de 5 segundos (5000 o 00:00:05).

Consulte la sección timeout parámetro para obtener más detalles.

El parámetro timeout

Puede definir el tiempo de espera especificando una representación de String en milisegundos o una representación de Time span . Por ejemplo:

  • String representación: 50000 (cincuenta segundos)
  • Time span representación: 2.05:20:10.001 (dos días, cinco horas, veinte minutos, diez segundos y un milisegundo)

Para estas representaciones, IBM RPA Studio las redondea al valor más cercano en segundos. Por ejemplo:

  • 1001 milisegundos son 00:00:01.001 y se redondea a 00:00:02
  • 60020 milisegundos son 00:01:00.020 y se redondea a 00:01:01

Los siguientes sistemas de base de datos establecen el tiempo de espera en ilimitado si establece su valor en cero, lo que significa que el mandato espera indefinidamente a ejecutarse:

  • Bases de datos conectadas a través de ODBC
  • Oracle™
  • SQL Server®
  • SQLite®

Algunos sistemas de base de datos utilizan tiempos de espera excedidos para calcular el tiempo que tarda en ejecutarse una consulta. Para excepciones de límite de tiempo de espera, puede establecer el tiempo de espera en cero o añadir tiempos de espera mayores.

Parámetro de salida

Etiqueta de modalidad de Diseñador Nombre de modalidad de Script Tipos de variable aceptados Descripción
Tabla de datos value Data Table Devuelve la tabla de datos que se ha originado a partir de la sentencia de procedimiento almacenado.
Filas rows Number Devuelve el número de filas de la tabla de datos.
Columnas columns Number Devuelve el número de columnas de la tabla de datos.

Ejemplo

El siguiente ejemplo de código muestra cómo ejecutar un procedimiento almacenado para recuperar un conjunto de valores para una grabación específica. Considere una tabla de base de datos denominada Libros. Esta tabla almacena libros y sus precios para vender. El procedimiento almacenado viewPrice recibe como parámetro el identificador de un libro que se va a recuperar.

defVar --name dbConnection --type DbConnection
defVar --name affectedRows --type Numeric
defVar --name pathMyDocuments --type String
defVar --name databaseFile --type String
defVar --name serverAddress --type String
defVar --name booksDataTable --type DataTable
// Gets the My Documents folder path.
getSpecialFolder --folder "MyDocuments" pathMyDocuments=value
// Assigns the 'sample.mwb' folder path to the 'databaseFile' variable.
setVar --name "${databaseFile}" --value "${pathMyDocuments}\\sample.mwb"
// Assigns the 'localhost' value to the 'serverAddress' variable.
setVar --name "${serverAddress}" --value localhost
// Connects to the database management system (DBMS). You must provide a valid connection string to connect with the database before you run this example.
mysqlConnect --connectionstring "Server=${serverAddress};Database=${databaseFile};Uid=root;Pwd=\'\';" dbConnection=connection
// Creates a table called 'Books' and inserts data into it. It also creates a stored procedure to query a book price.
sqlExecute --connection ${dbConnection} --statement "CREATE TABLE books (\r\n    identifier INT NOT NULL AUTO_INCREMENT,\r\n    book VARCHAR(255),\r\n    price DECIMAL(4,2),\r\n    PRIMARY KEY (identifier)\r\n);\r\n\r\nINSERT INTO books (book, price) VALUES (\'First book\', 40.00);\r\nINSERT INTO books (book, price) VALUES (\'Second book\', 25.00);\r\n\r\nCREATE PROCEDURE viewPrice (\r\n     IN idBook INT\r\n)\r\n\r\nBEGIN\r\n     SELECT price  \r\n     FROM books\r\n     WHERE identifier = @idBook;\r\nEND" --timeout "00:00:52"
// Runs the 'viewPrice' stored procedure passing the value 1 to the parameter.
sqlReaderProcedure --connection ${dbConnection} --name viewPrice --parameters "@idBook=1" --timeout "00:00:52" booksDataTable=value
// Logs the data in the data table after running the procedure.
logMessage --message "Numer of affected rows: ${affectedRows}" --type "Info"