Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Ejecutar Procedimiento MS SQL server con fDstoreProcedure (https://www.clubdelphi.com/foros/showthread.php?t=93232)

ASAPLTDA 23-06-2018 05:12:26

Ejecutar Procedimiento MS SQL server con fDstoreProcedure
 
Hola quiero ejecutar e siguiente procemiento de sqlserver, pero no me funciona podria alguien indicarme como hacerlo Gracias

Código SQL [-]
ALTER Procedure [dbo].[sp_rever]
@p_rowid_docto    int = 0,
@p_rowid_movto    int,     
@p_error int output,
@p_cadena_error varchar(500) output,
@p_ind_ubi_lote  smallint = 0
as
begin
 -- set  @p_error=0
 --   set @p_cadena_error = 'respuesta de este procedimiento:'  +  cast(@p_rowid_docto as char(1))
 --  set @p_cadena_error = 'respuesta de este procedimiento:' + CAST( @p_rowid_docto as varchar); 

End

y quiero saber como definir y leer las variables de salida del procedimiento


Código Delphi [-]
Function TFPedidosCierresAplazarEntrega.Cancelar_conpromiso(p_rowid_docto,p_rowid_movto:integer; var p_cadena_error:string ):Boolean ;
var
  W_p_error :string;

begin
   d.sp_inv_comprom_auto_rever.Params.ParamByName('@p_rowid_docto').AsInteger:=  p_rowid_docto ;
    d.sp_inv_comprom_auto_rever.Params.ParamByName('@p_rowid_movto').AsInteger:=  p_rowid_movto ;
    d.sp_inv_comprom_auto_rever.ExecProc;

    G_ERROR    :=  d.sp_inv_comprom_auto_rever.Params.ParamByName('@p_error').AsString;
    G_MSGERROR :=  d.sp_inv_comprom_auto_rever.Params.ParamByName('@p_cadena_error').asString ;
    g_RETURN_VALUE:=     d.sp_inv_comprom_auto_rever.Params.ParamByName('@RETURN_VALUE').asString ;

Alex Mireles 29-06-2018 05:55:37

Hola... Es Importante poner la clausula OUTPUT en los argumentos de la definición de tu Store Procedure.


Mira estos 2 ejemplos tomados de stackOverlow:

----Ejemplo 1:

ALTER PROCEDURE testme @input VARCHAR(10),
@output VARCHAR(20) output
AS
BEGIN
IF @input >= '1'
BEGIN
SET @output = 'i am back';

RETURN;
END
END

DECLARE @get VARCHAR(20);

EXEC testme
'1',
@get output

SELECT @get



-----Ejemplo 2:

CREATE PROCEDURE Myproc

@parm varchar(10),
**@parm1OUT varchar(30) OUTPUT**,
**@parm2OUT varchar(30) OUTPUT**
AS
SELECT @parm1OUT='parm 1' + @parm
SELECT @parm2OUT='parm 2' + @parm

GO

DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @parmIN VARCHAR(10)
DECLARE @parmRET1 VARCHAR(30)
DECLARE @parmRET2 VARCHAR(30)

SET @parmIN=' returned'
SET @SQLString=N'EXEC Myproc @parm,
@parm1OUT OUTPUT, @parm2OUT OUTPUT'
SET @ParmDefinition=N'@parm varchar(10),
@parm1OUT varchar(30) OUTPUT,
@parm2OUT varchar(30) OUTPUT'

EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@parm=@parmIN,
@parm1OUT=@parmRET1 OUTPUT,@parm2OUT=@parmRET2 OUTPUT

SELECT @parmRET1 AS "parameter 1", @parmRET2 AS "parameter 2"
GO
DROP PROCEDURE Myproc

----FIN
Saludos

Casimiro Notevi 29-06-2018 11:22:24

No olvides poner las etiquetas al código, gracias.




La franja horaria es GMT +2. Ahora son las 09:26:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi