Quiero ejecutar un procedimiento almacenado en SQL Server y asignar el resultado a una variable (devuelve un único valor)?Cómo devolver la salida del procedimiento almacenado en una variable en el servidor sql
Respuesta
Eso depende de la naturaleza de la información que desea devolver.
Si se trata de un único valor entero, puede utilizar la return
comunicado
create proc myproc
as
begin
return 1
end
go
declare @i int
exec @i = myproc
Si usted tiene un valor entero no, o una serie de valores escalares, puede utilizar los parámetros de salida
create proc myproc
@a int output,
@b varchar(50) output
as
begin
select @a = 1, @b='hello'
end
go
declare @i int, @j varchar(50)
exec myproc @i output, @j output
Si desea devolver un conjunto de datos, puede utilizar insert exec
create proc myproc
as
begin
select name from sysobjects
end
go
declare @t table (name varchar(100))
insert @t (name)
exec myproc
incluso puede devolver un cursor pero eso es sólo horrible así que no daré un ejemplo :)
Para enteros, aún debe usar parámetros de salida. Valor de retorno de la reserva para lo que están diseñados: estado. Los buenos programadores separan conceptos y escriben código sólido. ¿Qué sucede si su procedimiento almacenado que devuelve un número entero falla? –
observé anomoly que cuando devuelvo un decimal sus decimales son cero, pero cuando lo cambio para seleccionarlo devuelve las posiciones decimales correctamente. – Rama
@DRAM 'return' devuelve un único valor ** entero – podiluska
Puede usar la instrucción return
dentro de un procedimiento almacenado para devolver un código de estado entero (y solo de tipo entero). Por convención, se usa un valor de retorno de cero para tener éxito.
Si no se establece explícitamente return
, el procedimiento almacenado devuelve cero.
CREATE PROCEDURE GetImmediateManager
@employeeID INT,
@managerID INT OUTPUT
AS
BEGIN
SELECT @managerID = ManagerID
FROM HumanResources.Employee
WHERE EmployeeID = @employeeID
if @@rowcount = 0 -- manager not found?
return 1;
END
Y se llama de esta manera:
DECLARE @return_status int;
DECLARE @managerID int;
EXEC @return_status = GetImmediateManager 2, @managerID output;
if @return_status = 1
print N'Immediate manager not found!';
else
print N'ManagerID is ' + @managerID;
go
se debe utilizar el valor de cambio de los códigos de estado solamente. Para devolver datos, debe usar los parámetros de salida.
Si desea devolver un conjunto de datos, utilice un parámetro de salida del tipo cursor
.
@downvoter, ¿te importa explicar qué pasa? –
utilizar este código, funciona correctamente
CREATE PROCEDURE [dbo].[sp_delete_item]
@ItemId int = 0
@status bit OUT
AS
Begin
DECLARE @cnt int;
DECLARE @status int =0;
SET NOCOUNT OFF
SELECT @cnt =COUNT(Id) from ItemTransaction where ItemId = @ItemId
if(@cnt = 1)
Begin
return @status;
End
else
Begin
SET @status =1;
return @status;
End
END
Ejecutar SP
DECLARE @statuss bit;
EXECUTE [dbo].[sp_delete_item] 6, @statuss output;
PRINT @statuss;
- 1. Ejecución programada del procedimiento almacenado en el servidor SQL
- 2. Mi consulta SQL SQL se ejecuta y obtiene una salida en una variable en el procedimiento almacenado
- 3. Cláusula de salida del servidor SQL en una variable escalar
- 4. Procedimiento almacenado del servidor SQL para enviar correo electrónico
- 5. ¿Cómo declarar una matriz dentro del procedimiento almacenado en el servidor Sql?
- 6. MS SQL: Suprime el valor devuelto del procedimiento almacenado llamado en el procedimiento almacenado
- 7. ¿Variable global basada en sesión en el procedimiento almacenado Postgresql?
- 8. Llamar a procedimiento almacenado de otro SQL procedimiento almacenado del servidor
- 9. Cómo devolver la tabla temporal del procedimiento almacenado
- 10. Parámetros de salida de procedimiento almacenado en SQL Server Profiler
- 11. Cómo declarar una variable en SQL Server y usarla en el mismo procedimiento almacenado
- 12. Cómo utilizar el procedimiento almacenado en SqlCE
- 13. Servidor SQL: el procedimiento almacenado se vuelve lento
- 14. LINQ to SQL: Resultados del procedimiento almacenado
- 15. SQL Server: variable opcional en un procedimiento almacenado
- 16. Uso de parámetros de salida de procedimiento almacenado en C#
- 17. resultado de SQL dinámico en una variable de SQL-servidor
- 18. la salida de un procedimiento almacenado
- 19. podemos devolver un valor nulo del procedimiento almacenado
- 20. Ejecutar procedimiento almacenado en SQL Developer?
- 21. Ejecutar el paquete SSIS de SQL Server del procedimiento almacenado
- 22. ¿La ejecución del procedimiento almacenado de T-SQL es "atómica"?
- 23. Insertar resultados del procedimiento almacenado del servidor vinculado
- 24. Servidor SQL: ¿es posible recorrer un procedimiento almacenado?
- 25. procedimiento almacenado, mediante la variable en la expresión LÍMITE
- 26. Desaparición del procedimiento almacenado
- 27. T-Sql Cómo devolver una tabla desde un archivo almacenado en otro proceso almacenado
- 28. Guardar resultado del procedimiento almacenado en una tabla de variables
- 29. Cómo llamar a la función C# en el procedimiento almacenado
- 30. SQL Server 2008 procedimiento almacenado con múltiples parámetros de salida
Lo que hace ¿Regresó su procedimiento almacenado? Un solo valor? ¿Un conjunto de resultados? –