Exec Usp Desde Pb
Click here to load reader
-
Upload
estrella-lopez-esternocleidomastoideo -
Category
Documents
-
view
29 -
download
1
Transcript of Exec Usp Desde Pb
COMO EJECUTAR DESDE POWER BUILDER PROCEDIMIENTOS ALMACENADOS (STORED PROCEDURES) EN SQL SERVERPower Builder [email protected]
Para ejecutar un procedimiento almacenado que nos devuelva un resultado realizaremos las
siguientes operaciones:
1. Crear un procedimiento almacenado en SQL Server
2. Crear el código en Power Builder que despliegue el resultado del Stored Procedure
1. Crear un procedimiento almacenado en SQL Server
--En SQL Server Ejecutamos el siguiente codigo
--Creamos el procedimiento en SQl Server
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
Create Procedure PSuma
--recibimos dos parametros
@a int,
@b int
as
--declaramos lavariable que contendra el resultado
declare @c int
select @c = @a + @b
--devolvemos el resultado
select @c
GO
SET QUOTED_IDENTIFIER OFF
GO SET ANSI_NULLS ON
GO
2. Crear el código en Power Builder que despliegue el resultado del Stored Procedure
//------------------------------------------------------------------------
//En power Builder escribimos el siguiente código
//Codigo en Power Builder
//Declaramos dos variables de trabajo
int a,b,resultado
a = 3 b = 5
//declaramos el procedimiento almacenado
//Primero declaramos con un nombre lógico para el nombre del procedimiento almacenado
//enviamos los dos parámetros a y b
declare pb_Suma procedure for PSuma
@a = :a,
@b = :b;
//ejecutamos el procedimiento
execute pb_Suma;
//el resultado es devuelto en un cursor el cual es vaciado en la variable resultado
fetch pb_Suma into :resultado;
//cerramos el cursor
close pb_Suma;
//Asignamos el valor resultado en un sle
sle_1.text = string(resultado) Publicado por David Castilloen 21:59 Etiquetas: Power Builder 10.5, procedimeinto almacenado, Sql Server, Stored Procedure
2 4 c o m e n t a r i o s :
adario dijo...Hola fijate que quiero executar un SP en sql 2005 desde power builder 105. Necesito que al presionar un botón, se ejecute el stored procedure. Lo único es que el stored procedure no tiene parametros, no los necesito, pero quiero que se ejecute al hacer click en el botón. Me podrías decir que Power Script debo colocar en el evento clicked de mi boton? No necesito mostrarlo en ningún sle_, solamente ejecutar las instrucciones del SP. Creoq ue sería algo sencillo para ti. Gracias
26 de abril de 2008 23:06
David Castillo dijo...//Declatramos el procedimiento almacenado a ejecutarsedeclare pb_Suma procedure for PSuma;
//ejecutamos el procedimiento//si no es necesario ningun resultado esto solo ejecutara el procedimiento en sql serverexecute pb_Suma;
5 de junio de 2008 12:19
Ana María dijo...Hola, super tu ayuda con esto de la ejecución de procedimientos almacenados... pero me gustaria saber cómo hago si tengo mas de un valor de salida?
6 de junio de 2008 15:02
David Castillo dijo...
Para trabajar con procedimiento alamcenado que devuelme mas de un valor el resultado se debe ser capturado en power builder en un cursor en http://blogcastillodavid.blogspot.com/2008/06/como-ejecutar-desde-power-builder.html
Hay un ejemplo.
6 de junio de 2008 17:07
Rafael Paul dijo...ayudame indicando otra pagina donde pueda ver como capturar mas de un valor de unn stored procedure, el link que indicas ya no existe
2 de julio de 2008 11:48
David Castillo dijo...Estimado Rafael que extraño que no podas entrar a la pagina porque esta se encuentra en el mismo blog. Sin embargo aqui tienes un ejemplo cuando tienes varias filas de retorno:Para ejecutar un procedimiento almacenado que devuelve varios registros es necesario recibir los registros en un cursor.
Para este ejemplo utilizaremos la Base de Datos Northwind de SQL Server.
1. Primero creamos un procedimiento almacenado que desplegara los empleados cuyo titulo incluya la palabra 'representative'
SET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GO-- Definimos el procedimiento almacenado-- este procedimiento devuelve aquellos titulos que incluyan en el campo título el parametro enviado
CREATE Procedure Pemployees--recibimos un parametro@filtro varchar(10)
as--declaramos la variable que contendra el resultado
select employeeid, lastname,firstname,titlefrom employeeswhere title like '%'+@filtro+'%'
GOSET QUOTED_IDENTIFIER OFF
GOSET ANSI_NULLS ON GO
2. En Power Builder desplegaremos el resultado en el control List (LB_1)
//Codigo en Power Builder//Declaramos las variables de trabajoint employeeidstring lastnamestring firstname
//Declaramos la variable que enviara el parametrostring filtrofiltro = 'representative'
//declaramos el procedimiento almacenado//Primero declaramos con un nombre lógico del procedimiento almacenado//y enviamos el parametro
declare pb_Employees procedure for PEmployees@filtro = :filtro;
//ejecutamos el procedimientoexecute pb_Employees;
//el resultado es devuelto en un cursor el cual es vaciado en el cursor resultadofetch pb_Employees into :Employeeid, :lastname, :firstname, :title;
//Una vez cargado el cursor con n registros lo recorremos//Mientras no sea fin del cursorDO WHILE sqlca.sqlcode = 0 //Adicionamos a un lb_1 los registros recorridoslb_1.additem( string(Employeeid) + ' ' + lastname + ' ' + firstname + ' ' + title)
// Colocamos los valores de la siguiente fila a las variables de trabajo fetch pb_Employees into :Employeeid, :lastname, :firstname, :title;LOOP
//cerramos el cursorclose pb_Employees;
2 de julio de 2008 16:04
carol dijo...Hola, me gustaria que me expliques este pa., me lo paso un amigo pero no m lo pudo explicar, y si podrias decirme como lo ejecuto en pb mucho mejor gracias
CREATE PROCEDURE aaa@curso varchar(50),@codesc varchar (10),@fechita datetime AS
SELECT C.cod_curso, C.desc_curso
FROM CURSO C
WHERE C.desc_curso LIKE @curso +'%'and C.cod_escuela LIKE @codescGO
10 de julio de 2008 12:22
David Castillo dijo...Hola carol
Este procedimiento almacenado llamado AAACREATE PROCEDURE aaa@curso varchar(50),@codesc varchar (10),@fechita datetime AS
SELECT C.cod_curso, C.desc_curso
FROM CURSO C
WHERE C.desc_curso LIKE @curso +'%'and C.cod_escuela LIKE @codescGO
Recibe tres parametros1. curso que es un varchar de (50) asumo que sera el curso2. codesc con varchar de 10 (debe ser codigo de escuela3. fechita un valor de tipo datetime este parametro no es utilizado en el pa;
Este procedimiento almacenado devuelve el todos los cursos que empiezan con el codigo curso y pertenecen a la escuela seleeccionada
para ejecutarlo desde Sql Server la linea debe ser:
aaa 'curso_a_buscar', 'codigo_escuela', '01/01/2008'
para ejecutar este procedimiento desde power builder debes escribir el siguiente codigo
//Codigo en Power Builder//Declaramos las variables de trabajostring cursostring codescdate fechita
//declaramos el procedimiento almacenado//Primero declaramos con un nombre lógico del procedimiento almacenado//y enviamos el parametro
declare aaa procedure for aaa
//ejecutamos el procedimientoexecute aaa;
//el resultado es devuelto en un cursor el cual es vaciado en el cursor resultadofetch aaa into :curso, :codesc;
//Una vez cargado el cursor con n registros lo recorremos//Mientras no sea fin del cursorDO WHILE sqlca.sqlcode = 0 //Adicionamos a un lb_1 los registros recorridoslb_1.additem( curso + ' ' + codesc)
// Colocamos los valores de la siguiente fila a las variables de trabajo fetch aaa into :curso, :codesc;LOOP
//cerramos el cursorclose aaa;
10 de julio de 2008 13:16
carol dijo...Hola, quisiera que le des una chequeadita a mi pa. que he hecho es acerca de herencia persona a persona juridica, y tambien podrias indicarme como lo puedo llamar desde pb,ose creo dos dw uno para persona y otro para persona juridica, xq no m sale no me permite ingresar dx en persona juridicaCREATE procedure usp_personajuridica_insertar@xcod_persona varchar(10),@xtel_persona varchar(50),@xemail_persona varchar(50),@xdir_persona varchar(50),
@xrazsoc_personajuridica varchar(30),@xruc_personajuridica varchar(11),@xrepleg_personajuridica varchar(30)
asinsert into persona values (@xcod_persona,@xtel_persona,@xemail_persona,@xdir_persona)insert into persona_juridica values (@xcod_persona,@xrazsoc_personajuridica,@xruc_personajuridica,@xrepleg_personajuridica)GO
10 de julio de 2008 14:51
carol dijo...Hola, quisiera que le des una chequeadita a mi pa. que he hecho es acerca de herencia persona a persona juridica, y tambien podrias indicarme como lo puedo llamar desde pb,ose creo dos dw uno para persona y otro para persona juridica, xq no m sale no me permite ingresar dx en persona juridicaCREATE procedure usp_personajuridica_insertar@xcod_persona varchar(10),@xtel_persona varchar(50),@xemail_persona varchar(50),@xdir_persona varchar(50),
@xrazsoc_personajuridica varchar(30),@xruc_personajuridica varchar(11),@xrepleg_personajuridica varchar(30)
asinsert into persona values (@xcod_persona,@xtel_persona,@xemail_persona,@xdir_persona)insert into persona_juridica values (@xcod_persona,@xrazsoc_personajuridica,@xruc_personajuridica,@xrepleg_personajuridica)GO
10 de julio de 2008 14:55
darkmorfix dijo...Hola David, necesito ejecuta un procedimiento almacenado en un datawindows, al ingresar un numero, por ejemplo de una prefactura(EJ:378) en un cuadro de texto, la idea es clickear un boton buscar y que me taiga los datos relacionados a ese numero de prefactura a la datawindows y ahi trabajarlos para que mas tarde poder crear la facturacion. de antemano muchas gracias.
25 de noviembre de 2008 12:11
darkmorfix dijo...Esmidado David, despues de varios intentos, me empezo a entregar los datos en la datawindows gracias por la ayuda prestada.Consulta? ¿Puedo trabajar la informacion de la datawindows?, en la datawindows me muestra la prefactura(378), Ej: esta me trae 6 filas con distintos valores todos relacionados a la misma prefactura, En la columna Total Factura(total_f), contiene todos los valores, cada fila tiene una valor distinto, lo que quiero es sumar todos esos valores(total_f) y el resultado multiplicarlo por el valor de la columna exento, para que me muestre los valores Afecto y exento que contiene la factura.mo se si sera dificil hacer esto, pero de todos modos muchas gracias por la ayuda prestada
26 de noviembre de 2008 10:36
Gerardo Emmanuel dijo...ingresa a : es.geocities.com/gds_systemy ve a la seccion tutoriales de hecho que te ayudara
5 de febrero de 2009 06:07
Jhan dijo...SELECT "departamento"."depto_nombre", "empleado"."emp_apellido", "empleado"."emp_nombre", "empleado"."emp_depto_id", "empleado"."emp_id" FROM "departamento", "empleado" WHERE ( "empleado"."emp_depto_id" = "departamento"."depto_id" ) and ( ( "empleado"."emp_nombre" = :nombre ) OR ( "empleado"."emp_apellido" = :apellido ) ) ORDER BY "empleado"."emp_apellido" ASC
muchachos tengo este codigo,,y necesito que al preguntar por el nombre o el apellido, pueda usar el like como normalmente se hace asi like "% variable%", pero no he podido hacerlo...gracias
8 de febrero de 2010 08:28
Jhan dijo...bueno esto es en power builder,,,,gracias
8 de febrero de 2010 08:30
David Castillo dijo...Jhan
La consulta que escribes no tiene el paramnetro de Power ni de Sql server, aqui t envio el código en sql server
Que espero te sea util
Caso contrario por favor escribe si lo deseas en power builder y te dare el codigo requerido
Un gran saludo
declare @apellido nvarchar(25)declare @nombre nvarchar(50)
set @nombre = 'abe'
SELECT "departamento"."depto_nombre", "empleado"."emp_apellido", "empleado"."emp_nombre", "empleado"."emp_depto_id", "empleado"."emp_id" FROM "departamento", "empleado" WHERE ( "empleado"."emp_depto_id" = "departamento"."depto_id" ) and ( ( "empleado"."emp_nombre" like '%' + nombre + '%' ) OR ( "empleado"."emp_apellido" likr '%' +apellido+ '%' ) ) ORDER BY "empleado"."emp_apellido" ASC
8 de febrero de 2010 09:12
Jhan dijo...david:
agradezco el interes en ayudarme, el codigo lo necesito en power builder, ya que el complique que tengo es en el argumento :nombre y :apellido para poder utilizarlo con el like....de forma correcta es que la verdad no tengo claro el uso de las ' y " ademas del signo +....gracias,,,,
8 de febrero de 2010 11:05
David Castillo dijo...Jhan
Utliza la comilla simple para adicioanr el simbolo porcentaje y luego suma tu variable de trabajo.
El código es el siguiente:
SELECT "departamento"."depto_nombre", "empleado"."emp_apellido", "empleado"."emp_nombre", "empleado"."emp_depto_id", "empleado"."emp_id" FROM "departamento", "empleado" WHERE ( "empleado"."emp_depto_id" = "departamento"."depto_id" ) and (( dbo.Personal.apellidoPaterno like '%'+ :apellido + '%' ) OR ( dbo.Personal.nombres like '%'+ :nombre + '%' )) ORDER BY "empleado"."emp_apellido" ASC
Como una sugerencia puedes realizar la consulta solo con una variable y una vez que veas su funcionamiento adicionas la segunda variable en el retrieve
es decir: el código seria el siguiente:
SELECT "departamento"."depto_nombre", "empleado"."emp_apellido", "empleado"."emp_nombre", "empleado"."emp_depto_id", "empleado"."emp_id" FROM "departamento", "empleado" WHERE ( "empleado"."emp_depto_id" = "departamento"."depto_id" ) and ( dbo.Personal.apellidoPaterno like '%'+ :apellido + '%' ) ORDER BY "empleado"."emp_apellido" ASC
8 de febrero de 2010 13:51
Jhan dijo...jeje gracias,,,lo seguire molestando y si tenes documentacion sobre el power builder 9,,,seria un gran favor...estoy de novato en este lenguaje,,,,,,Exitos...
8 de febrero de 2010 14:05
29917541 dijo...Ejecuto un procedimiento almacenado desde power builder 9 y no me devuelve nada la variable de salida pero lo ejecuto desde la ventana de consulta y me fnciona perfecto no entiendo porque.
Codigo de store procedure
CREATE PROCEDURE dbo.sp_fecha_hora@dt_fecha_hora datetime OUTPUT
ASSelect @dt_fecha_hora = getdate()Select @dt_fecha_horareturnGO
Codigo de ejecución desde power builder 9
declare sp_proc procedure for dbo.sp_fecha_hora @dt_fecha_hora = :idt_fecha OUTPUTusing sqlca;execute sp_proc; IF SQLCA.SQLCode = -1 THEN MessageBox("SQL error", SQLCA.SQLErrText)END IF
Y no me da error no se que es lo que estoy haciendo malo me esta faltando.
Espero que me puedan ayudar.
Saludos.