当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 如何在aspx中得到在存储过程中的的数值(兼答jspfuns的问题)

ASP.NET
析构函数的作用 什么是析构函数
asp.net下Request.QueryString取不到值的解决方法
设置DropDownList的当前选项
生成多字段排序分页的SQL的通用类
注册表中存储数据库链接字符串的方法
asp.net下百度的编码和解码
asp.net 操作excel的实现代码
用ASP.NET做的个性化的邮件发送系统
DotNet2.0 生成网站的测试
ASP.net 验证码实现代码(C#)
C#中string与byte[]的转换帮助类-.NET教程,C#语言
把jQuery的each(callback)方法移植到c#中
asp.net对URL含有中文参数的转换
C#语言初级入门介绍
C#编码好习惯小结
C#声明方法实例说明
C#使用正则表达式实例
C#列出局域网中可用SQL Server服务器(续)
将DataRow转成指定类型的类,并返回这个类的对象(带值)
asp.net OleDbCommand 的用法

ASP.NET 中的 如何在aspx中得到在存储过程中的的数值(兼答jspfuns的问题)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 132 ::
收藏到网摘: n/a

这里的存储过程是在SQL Server 下的存储过程,由于目前豆腐没有使用存储过程,所以豆腐在举例子的时候
使用了SQL2K,估计在Oracle下应该也是一样的,欢迎大家 和豆腐一起来探讨这个问题
我们知道在存储过程中有个被称做output 的参数,他可以在不同的存储过程之中互相的传递参数,在使用output 的时候
要注意下面的情况

OUTPUT 变量必须在创建表和使用该变量时都进行定义。参数名和变量名不一定要匹配,不过数据类型和参数位置必须匹配
我们创建一个最简单的存储过程
CREATE PROCEDURE test
(@subject Varchar(15) Output)
AS
select @subject='豆腐制作 都是精品'
GO
可是如何取得回掉的参数呢?白思不得其解,后来终于在SQL AnaLyzer 上得到了启发,
DECLARE @aa Varchar(10)
execute test @aa output
select aa=@aa
根据这个,我们可在Asp.Net中利用ADO+的多语句处理功能来实现我们的设想,最终通过SQLDataReader 如同
Select 语句一样来得到输出,完整的程序如下。

<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>
<script language="C#" runat=server>
protected void Page_Load(Object Src, EventArgs E){
SQLDataReader dbRead;
SQLCommand dbComm;
String strSQL;
String strConn;
SQLConnection conn;
Hashtable Cfg=new Hashtable();
Cfg = (Hashtable)Context.GetConfig("appsettings");
strConn=Cfg["Conn"].ToString();
conn = new SQLConnection(strConn);
strSQL="DECLARE @aa Varchar(10)\nexecute test @aa output\nselect aa=@aa";
dbComm = new SQLCommand(strSQL, conn);
dbComm.ActiveConnection.Open();
dbComm.Execute(out dbRead);
dbRead.Read();
showmsg.Text=dbRead["aa"].ToString();
}
</script>
<html>
<head>
<title>测试存储过程</title>
</head>
<body>
<asp:Label id=showmsg runat=server />
</body>
</html>
其实,豆腐在实际的应用中一般是很少使用output 参数的,豆腐一般都是这样使用的:
存储过程 的内容如下:
CREATE PROCEDURE test
AS
select @subject='豆腐制作 都是精品'
select aa=@subject
GO
就是在 存储过程 的最后依据利用 Select 让存储过程返回一个记录集合,然后我们就可以把这个存储过程
看作是一个 select 语句来处理了,这样下来,asp.Net 的SQL 语句就变成了
strSQL="test";
其他的内容都变化,一样可以得到相同的效果