viernes, 19 de agosto de 2011

Genexus - Tablas Temporales

Para poder utilizarlas este tipo de tablas en GeneXus se debe tener por un lado un DataView en donde la tabla por ejemplo llamada internamente en GeneXus 'MiTemporal' tenga asociado el nombre externo '#MiTemporal' esto nos permitirá utilizar el carácter '#' que dentro de GeneXus no esta permitido. Por otro lado antes de acceder a esta tabla es necesario ejecutar un comando de 'create' con una sentencia SQL, por ejemplo

SQL CREATE TABLE [#MiTemporal] ...

Esto creara la tabla temporal en la base y luego el resto de los programas GeneXus accederán a esta tabla sin diferenciarla de cualquier otra.

Genexus - Ejecutar Sentencia SQL

    &Sent = 'EXECUTE [GX90Ope].[dbo].[SelecProduc] '
    SQL [!&Sent!]

Genexus - SQL External Stores Procedures

List of external stored procedures : SelecProducIns SelecProducDel

Si son de in o out siempre poner output out

CREATE PROCEDURE [dbo].[SelecProducIns]
 @ProdCod int output
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
 BEGIN TRANSACTION
 INSERT INTO [dbo].[PRODSELEC]([SelProCod])
 SELECT [ProdCod]  FROM [dbo].[PRODUCTOS]  where ProdCod=@ProdCod
 COMMIT TRANSACTION
END

CREATE PROCEDURE [dbo].[SelecProducDel]
  @ProdCod int output
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
 BEGIN TRANSACTION
 delete   FROM [dbo].[PRODSELEC] where SelProCod=@ProdCod
 COMMIT TRANSACTION
END


//////////////////////////////////////////
extprog.ini en la razi de la kb

Si son de in o out siempre poner output out
[SelecProducIns]
ProgramType=StoredProcedure
ProgramName=SelecProducIns
ParmMode=out
ParmType=Number,4,0;
ParmName=ProdCod

[SelecProducDel]
ProgramType=StoredProcedure
ProgramName=SelecProducDel
ParmMode=out
ParmType=Number,4,0;
ParmName=ProdCod

////////////////////////////////////////


CALL('SelecProducIns', &ProdCod)
CALL('SelecProducDel', &ProdCod)