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:
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:
Stringrepresentación:50000(cincuenta segundos)Time spanrepresentació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:
1001milisegundos son00:00:01.001y se redondea a00:00:0260020milisegundos son00:01:00.020y se redondea a00: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"