A. 获取存储过程的ReturnValue值 存储过程为主键生成新值后,通常使用存储过程中的 RETURN 语句返回该值,因此用来访问该值的参数类型是 ReturnValue 参数。 取回值的时候用args[0].Value.ToString() B.获得SQL-server存储过程的返回值存储过程为: ///<summary> 存储过程为: CREATE PROCEDURE [dbo].[us_styletextnew] 希望对刚学存储过程的朋友有点帮助! 用过SQLHelper的朋友,一定很怀疑SQLHelper怎么不能执行带输出、返回参数的存储过程呢?请参考 http://blog.joycode.com/ghj/archive/2004/04/12/19015.aspx 此文并没有做成相应的解决方法,所以这也是写本文的一个出发点。原因值需要修改存储过程中RETURN @id为SELECT @id,取值采用SqlHelper.ExecuteScalar 方法.其中原理并没有违背SqlHelper.ExecuteScalar取第一行一列的值。 string aa= SqlHelper.ExecuteScalar(SqlHelper.CONN_STRING,”PRO_Table1_OPER”,sp).ToString(); C.如何在存储过程中引用别的存储过程返回的表 1. 一般的方法认为只有把存储过程返回的值,写入一个结构相同的 insert #t exec proc2 select * from #t left join table on … 2。还有一个方面就是用openrowset(不过就是速度不怎么样)
用了这么长时间的.NET了,竟然连怎么获取存储过程的返回值都不知道,真是失败。
在网上搜了一下,就知道怎么用了。
Input 此参数只用于将信息从应用程序传输到存储过程。
InputOutput 此参数可将信息从应用程序传输到存储过程,并将信息从存储过程传输回应用程序。
Output 此参数只用于将信息从存储过程传输回应用程序。
ReturnValue 此参数表示存储过程的返回值。SQL Server 的存储过程参数列表中不显示该参数。它只与存储过程的 RETURN 语句中的值相关联。
ReturnValue 参数与其他类型的参数有一个重要的区别。通常,在 ADO.NET 中为 Command 对象配置的参数的顺序并不重要。参数名称只用来与存储过程中相应的参数相匹配。但是,对于 ReturnValue 参数,它必须是列表中的第一个参数。
也就是说,为 Command 对象配置 ReturnValue 参数时,必须首先在代码中配置该参数,这样它才能获取集合中的第一个数字索引。如果先配置任何其他参数,ReturnValue 参数将不能正常工作。
呵呵,这样就可以了
args[0] = new SqlParameter(“@RETURN_VALUE”, SqlDbType.Int );
args[0].Direction = ParameterDirection.ReturnValue;
///c#code,获得SQL-server存储过程的返回值
///<summary>
SqlParameter[] sp = new SqlParameter[5];
sp[0]=new SqlParameter(“@Name”,SqlDbType.VarChar);
sp[0].Value=this.TextName.Text;
sp[1]=new SqlParameter(“@Text”,SqlDbType.Text);
sp[1].Value=this.TextTxt.Text;
sp[2]=new SqlParameter(“@Comment”,SqlDbType.Text);
sp[2].Value=this.TextComment.Text;
sp[3]=new System.Data.SqlClient.SqlParameter(“ReturnValue”,System.Data.SqlDbType.Int,4,System.Data.ParameterDirection.ReturnValue,false,0,0,string.Empty,DataRowVersion.Default,null);
//参数”ReturnValue”,System.Data.ParameterDirection.ReturnValue声明此参数为返回值。
sp[4]=new SqlParameter(“@Type”,SqlDbType.Int);
sp[4].Value=int.Parse(this.ClickBox.SelectedItem.Value);
_SQL.ExecuteSP(“us_styletextnew”,sp);
//使用sp[3].Value.ToString()即可!
@id int=0,
@Name varchar(50),
@Text text,
@Comment text,
@Type int
AS
SET NOCOUNT ON
IF not EXISTS(SELECT [Name] FROM [dbo].[iStyle] WHERE [Name] = @Name)
BEGIN
INSERT INTO
[dbo].[iStyle]
([Name],
[Text],
[Comment],
[Type])
VALUES
(@Name,@Text,@Comment,@Type)
SET @id = SCOPE_IDENTITY()
END
RETURN @id
GO
辅助表中,如下:
create procedure proc1
as
begin
create table #t(…) –表结构同被调用存储过程返回结果集的结构
end
go
select * from openrowset(sqloledb
,Trusted_Connection=yes
,exec sp_who) — 这里是你要调用的存储过程
参考文献 :http://www.linkui.cn/read-20.html
http://blog.joycode.com/ghj/archive/2004/04/12/19015.aspx
探讨sql server存储过程_数据库技巧
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 探讨sql server存储过程_数据库技巧
相关推荐
-      sql语句中的判断功能的使用方法
-      sql语句中的判断功能的使用方法
-      SQL语言中去掉小数点有效数字后面的所有0
-      在sql语句中实现md5功能
-      ASP连接各种数据库的代码
-      给access数据库减肥
-      asp连接access数据库代码(2)
-      更改 SQL Server 登录模式