sql-server - stored - procedimiento almacenado para mostrar datos
Ejecutar procedimiento almacenado con un parĂ¡metro de salida? (11)
Ejemplo de procedimiento:
Create Procedure [dbo].[test]
@Name varchar(100),
@ID int Output
As
Begin
SELECT @ID = UserID from tbl_UserMaster where Name = @Name
Return;
END
Cómo llamar a este procedimiento
Declare @ID int
EXECUTE [dbo].[test] ''Abhishek'',@ID OUTPUT
PRINT @ID
Tengo un procedimiento almacenado que estoy tratando de probar. Estoy intentando probarlo a través de SQL Management Studio. Para ejecutar esta prueba, ingreso ...
exec my_stored_procedure ''param1Value'', ''param2Value''
El parámetro final es un output parameter
. Sin embargo, no sé cómo probar un procedimiento almacenado con parámetros de salida.
¿Cómo ejecuto un procedimiento almacenado con un parámetro de salida?
¿Qué tal esto? Es extremadamente simplificado:
El SPROC a continuación tiene un parámetro de salida de
@ParentProductID
Queremos seleccionar el valor de la salida de
@ParentProductID
en@MyParentProductID
que se declara a continuación.Aquí está el Código:
declare @MyParentProductID int exec p_CheckSplitProduct @ProductId = 4077, @ParentProductID = @MyParentProductID output select @MyParentProductID
Desde http://support.microsoft.com/kb/262499
Ejemplo:
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
¡Espero que esto ayude!
La manera más fácil es hacer right-click
en el procedure
en Sql Server Management Studio (SSMS),
seleccione execute stored procedure...
y agregue valores para los parámetros de entrada según lo solicitado.
SSMS
generará el código para ejecutar el proceso en una nueva ventana de consulta y lo ejecutará por usted. Puedes estudiar el código generado para ver cómo se hace.
Primero, declare la variable de salida:
DECLARE @MyOutputParameter INT;
Luego, ejecute el procedimiento almacenado, y puede hacerlo sin los nombres de los parámetros, como este:
EXEC my_stored_procedure ''param1Value'', @MyOutputParameter OUTPUT
o con los nombres de los parámetros:
EXEC my_stored_procedure @param1 = ''param1Value'', @myoutput = @MyOutputParameter OUTPUT
Y finalmente, puede ver el resultado de salida haciendo un SELECT
:
SELECT @MyOutputParameter
Puedes hacerlo :
declare @rowCount int
exec yourStoredProcedureName @outputparameterspOf = @rowCount output
Retorno val del procedimiento
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
Verifique esto, donde los primeros dos parámetros son parámetros de entrada y el tercero es el parámetro de Salida en la definición del Procedimiento.
DECLARE @PK_Code INT;
EXEC USP_Validate_Login ''ID'', ''PWD'', @PK_Code OUTPUT
SELECT @PK_Code
> Pruebe esto funciona bien para el parámetro de salida múltiple:
CREATE PROCEDURE [endicia].[credentialLookup]
@accountNumber varchar(20),
@login varchar(20) output,
@password varchar(50) output
AS
BEGIN
SET NOCOUNT ON;
SELECT top 1 @login = [carrierLogin],@password = [carrierPassword]
FROM [carrier_account] where carrierLogin = @accountNumber
order by clientId, id
END
Try for the result:
SELECT *FROM [carrier_account]
DECLARE @login varchar(20),@password varchar(50)
exec [endicia].[credentialLookup] ''588251'',@login OUTPUT,@password OUTPUT
SELECT ''login''=@login,''password''=@password
Aquí está el procedimiento almacenado
create procedure sp1
(
@id as int,
@name as nvarchar(20) out
)
as
begin
select @name=name from employee where id=@id
end
Y aquí está la manera de ejecutar el procedimiento
declare @name1 nvarchar(10)
exec sp1 1,@name1 out
print @name1
CREATE PROCEDURE DBO.MY_STORED_PROCEDURE
(@PARAM1VALUE INT,
@PARAM2VALUE INT,
@OUTPARAM VARCHAR(20) OUT)
AS
BEGIN
SELECT * FROM DBO.PARAMTABLENAME WHERE PARAM1VALUE=@PARAM1VALUE
END
DECLARE @OUTPARAM2 VARCHAR(20)
EXEC DBO.MY_STORED_PROCEDURE 1,@OUTPARAM2 OUT
PRINT @OUTPARAM2