我正在使用Microsoft Razor网站并将存储过程称为:
db.QuerySingle("Exec dbo.InsertSurvey @city=@0, @age=@1, @sport=@2,
@firstsport=@3, @secondsport=@4, @thirdsport=@5, @Survey_ID=@6",
searchTerm, selectage, selectsport, firstsport, secondsport, thirdsport, returnval);
插入工作正常,但我没有收到返回的标识值。
存储过程是:
ALTER PROCEDURE [dbo].[InsertSurvey]
-- Add the parameters for the stored procedure here
@city varchar(50),
@age varchar(50),
@sport varchar(50),
@firstsport varchar(50),
@secondsport varchar(50),
@thirdsport varchar(50),
@Survey_ID int output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO [dbo].[Survey]
([City]
,[Age]
,[Favorite_Professional_League]
,[First_Professional_League]
,[Second_Professional_League]
,[Third_Professional_League])
VALUES
(@city
,@age
,@sport
,@firstsport
,@secondsport
,@thirdsport)
SET @Survey_ID=SCOPE_IDENTITY()
END
似乎我应该指定我对存储过程的调用中的@Survey_ID
参数是用于输出而不是输入。
答案 0 :(得分:0)
数据库帮助程序不支持输出参数。它从未设计用于存储过程。您可以使用普通的ADO.NET,也可以使用QueryValue方法https://msdn.microsoft.com/en-us/library/webmatrix.data.database.queryvalue(v=vs.111).aspx
答案 1 :(得分:0)
我使用了以下组合:
SELECT @Survey_ID AS id RETURN
在存储过程中,并且:
var procSurvey = db.QueryValue("Exec sp...")
代码中的。它现在有效。谢谢你的帮助。