输出参数

时间:2009-01-23 15:01:52

标签: c# sql-server

如何从一个表的存储过程中获取输出参数,并使用该值如何在与该表相关的另一个表中插入数据?

4 个答案:

答案 0 :(得分:1)

创建SqlParameter对象时,将Output指定给其Direction属性。然后在执行查询后,将参数的值转换为C#变量并随意使用它:

SqlParameter newId = new SqlParameter();
newId.Direction = ParameterDirection.Output;
SqlCommand cmd = new SqlCommand();
// ... build your cmd...and add your other parameters as required
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
int outValue = (int)newId.Value;

然后使用outValue将其传递给下一个SQL查询。

答案 1 :(得分:0)

输出参数只是一个值,我不确定我理解你的问题。您是在讨论SQL Server 2008表值参数吗?

答案 2 :(得分:0)

第一次插入后,你会想要这样的东西:

SELECT @parameter_goes_here = SCOPE_IDENTITY()

这将为您提供刚刚输入的行的标识。然后在下一个插入中使用该值作为参数。

如果你需要一个完整的例子......请告诉我

答案 3 :(得分:0)

您可以使用以下内容:

CREATE PROCEDURE dbo.InsertNewImage
 @ImageTitle nvarchar(30),
 @ImageDescription nvarchar(100),
 @ImageFilename nvarchar(50),
 @ImageThumbnail image,
 @AlbumID int
AS
 Begin

  Set Nocount On

  DECLARE @ImageID int

  INSERT INTO Images(ImageTitle, ImageDescription, ImageFilename, ImageThumbnail)
  VALUES (@ImageTitle, @ImageDescription, @ImageFilename, @ImageThumbnail)

  SELECT @ImageID=@@IDENTITY

  INSERT INTO ImageInAlbum(ImageId, AlbumId)
  VALUES (@ImageID, @AlbumID)

 End

注意:如果您使用的是SQL Server 2005 +(我认为),请使用SCOPE_IDENTITY()而不是@@ IDENTITY