读书人

|M| 小弟我的一个存储过程怎么返回值

发布时间: 2012-01-06 22:55:18 作者: rapoo

|M| 我的一个存储过程,如何返回值啊要怎么写 谢谢
SQL存储过程:
CREATE PROCEDURE [insert_Table11_1]
(@name_1 [nvarchar](50))

AS INSERT INTO [HotelBook].[dbo].[Table11]
( [name])

VALUES
( @name_1)
GO
这里是插入表表有字段 id,name
现在是添加记录的name然后我要返回id如何更改上面的存储过程???
ASP.net执行:
SqlConnection conn=new SqlConnection(“connectionString”);
SqlCommand com = new SqlCommand();
com.Connection=conn;
com.CommandText= "insert_Table11_1 "
com.CommandType = CommandType.StoredProcedure;
??然后下面是怎么写的我是返回addid=添加返回的值

[解决办法]
SELECT @@IDENTITY AS 'Identity '

[解决办法]
CREATE PROCEDURE [insert_Table11_1]
(@name_1 [nvarchar](50))

AS INSERT INTO [HotelBook].[dbo].[Table11]
( [name])

VALUES
( @name_1)

SELECT @@IDENTITY AS 'Identity '

GO
[解决办法]
@@IDENTITY
返回最后插入的标识值。


[解决办法]
@@IDENTITY
是全局的

一般情况下不会有问题

如果用了触发器就不能用咯
[解决办法]
确切的说,如果你写了一个触发器,并且在触发器里做了insert操作,那@@IDENTITY会得到错误结果的
[解决办法]
CREATE PROCEDURE [insert_Table11_1]
(
@name_1 [nvarchar](50),
@OutID int output
)

AS
INSERT INTO [HotelBook].[dbo].[Table11]
( [name])
VALUES
( @name_1)

SET @OutID = (SELECT scope_identity() )
GO

//程序中
你的参数列表只增加一个参数

par[4] = new SqlParameter( "@UutID ", SqlDbType.Int, 4);
pas[4].Direction = ParameterDirection.Output;

//执行存储过程后

int outID = Convert.ToInt32(pas[4].value);

[解决办法]
par[4] = new SqlParameter( "@UutID ", SqlDbType.Int, 4);
应该是par[4] = new SqlParameter( "@OutID ", SqlDbType.Int, 4);
:)字误!
[解决办法]
楼上正解

PS:如果你用DataReader的话 最好是关了DR以后再去读返回参数的值
[解决办法]
scope_identity()

和@@IDENTITY作用类似

所不同的是它的作用范围是局部

而@@IDENTITY返回的是数据库任何表的新记录ID

[解决办法]
http://www.5d.cn/Tutorial/webdevelop/.net/200412/1960.html
[解决办法]
^_^

读书人网 >asp.net

热点推荐