我有以下(简化的)存储过程(我不允许修改):
CREATE PROCEDURE [dbo].[spDoSomething]
@someArg INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SomeID INT
-- some code which sets @SomeID --
SET @SomeID = 10
SELECT @SomeID AS SomeID
END
从 NHibernate 运行它时,我在分析器中看到以下查询:
exec sp_executesql N'exec spDoSomething @p0',
N'@p0 INT',
@p0=1
NHibernate 能够以某种方式检索SELECT
ed @SomeID 的值。
如果我在 MSSQL ManagementStudio 中运行此脚本,我会看到选定的结果。
我尝试使用与 sp_executesql 相同的 OUTPUT 方法和简单的 SQL 查询。例如,当我运行类似
exec sp_executesql N'INSERT INTO Users ... VALUES (...); select @UserId = SCOPE_IDENTITY()',
N'@UserId INT OUTPUT, ...',
@UserId OUTPUT, ...
然后 SCOPE_IDENTITY() 的结果存储在@UserId 中。但由于某种原因,相同的方法不适用于我的 [spDoSomething]。如果我尝试以下操作:
DECLARE @ReturnedID INT
exec sp_executesql N'exec spDoSomething @p0',
N'@ReturnedID INT OUTPUT, @p0 INT',
@ReturnedID OUTPUT, @p0=1
SELECT @ReturnedID
那么我的@ReturnedID 为 NULL。
如何将@SomeID 的值捕获到@ReturnedID 中?