【发布时间】:2014-06-10 17:35:13
【问题描述】:
我有一个表,其中有一列是根据表中的其他列自动生成的。我正在尝试使用存储过程将数据插入表中,然后返回自动生成列。在下面的存储过程中,@Num 代表自动生成的列。
我在这里采用的方法适用于将数据插入数据库。不起作用的是从Insert 存储过程返回@Num。是我试图做的可能。如果是这样,我做错了什么?如果没有,是否有替代方法来完成此操作?
这是我的 C#。当我运行它时,returnValue 返回 null。
internal static bool InsertApplication(Something something)
{
object returnValue;
string sql = "usp_InsertSproc";
returnValue = DatabaseFactory.CreateDatabase("ConnectionString").ExecuteScalar(sql, new Object[] { something.First_Name, something.Last_Name });
//I'd like to be able to access the @Num value from the Sproc here
}
这是我的存储过程:
ALTER PROCEDURE [dbo].[usp_InsertSproc]
(
@First_Name varchar(50),
@Last_Name varchar(50),
@Num Varchar(500) Output
)
AS
SET NOCOUNT OFF;
INSERT INTO [Table] ([First_Name], [Last_Name])
VALUES (@First_Name, @Last_Name, )
Return @Num
这就是我的桌子的样子。
CREATE TABLE [Table]
(
[First_Name] VARCHAR(50),
[Last_Name] VARCHAR(50),
[Num] AS ([dbo].[SetCMP]([Num]))
)
【问题讨论】:
-
你在哪里给
@Num赋值? -
也就是说,你应该
SELECT @Num而不是返回它。 -
@BrianDriscoll:如果是输出参数,还需要“返回”吗?设置还不够吗?
-
@ShaiCohen 我认为他的意思是选择
@Num而不是将其作为输出参数是更好的方法。 -
@shree.pat18 将生成 Num 的内容添加到帖子中。
标签: c# sql sql-server tsql enterprise-library