Como puedo pasar datos a un store procedure, realizado en sql server, estoy usando POWER BUILDER 10. Así mismo como puedo recuperar datos de un store procedure. Si pueden darme un pequeño ejemplo se los agradecería mucho.
1 respuesta
Respuesta de ivercastillo
1
1
ivercastillo, Desarrollo en Powerbuilder, con Bases de Datos SQL Server y...
Tengo dos opciones que pueden ser utilices: La primera es declarar el procedimiento almacenado en power builder y recuperar el resultado del procedimiento almacenado en un dataStore o en un datawindow. Por ejemplo en Northwind tienes el procedimiento almacendado CustOrderHist que pide un parámetro de entrada, el código para recuperar el resultado en un DDLB es: ------------------ //define parametro de entrada string parametro string campo1, campo2 //Llenamo el parámetro de entrada con un valor de la base (esto para fines de este ejemplo) parametro = 'ALFKI' //Declaramos el procedimiento almacenado //hacemos referencia al nombre del proc almacenado en la base de datos northwind. DECLARE CustOrderHist PROCEDURE FOR CustOrderHist @CustomerID = :parametro Using SQLCA; //ejecutamos el proc almacenado EXECUTE CustOrderHist; // el resultado se almacena en el cursor FETCH CustOrderHist into :campo1, :campo2 ; //Si existen datos deposita el resultado en las variables campo1 y campo2 y avanza el cursor. DO WHILE SQLCA.sqlcode = 0 //llenamos el ddlb con campo1 ddlb_1.additem( campo1) //leeos y avanzamos el cursor fetch CustOrderHist into :campo1, :campo2 ; LOOP La segunda un poco más practica y sencilla de crear un datawindow basado en un procedimiento almacenado. Para la segunda solución realiza lo siguiente: 1. Selecciona Inicio 2. Selecciona data Window 3. Elige el tipo de datawindow donde deseas capturar tu resultado (grid o fredom). 4. Luego En fuente de datos elige STORED PROCEDURE 5. Selecciona el procedimiento almacenado. 6. Guardas el data window 7. En power Builder en la linea de codigo llamas el data window pasando el parametro: dw_1.SetTransObject(SQLCA) dw_1.retrieve('parametro')