存储过程的使用

1.这是罗斯文示例数据库中一个要求单个输入参数的实际存储过程的调用语法示例:

2.这是一个要求单输入参数并返回一个输出参数和一个返回值的存储过程的调用语法示例:第一个占位符代表返回值:

双击插入的按钮切换到该按钮的 Click 事件的代码窗口。将以下代码输入或粘贴到 Click 事件过程,根据需要修改 SQL Server 连接字符串:

SplConnection cn;
SplCommand cmd;
Parameter prm;
DataReader dr;

try{
//连接数据库
cn = new SplConnection("Server=servername;Database=Northwind;Trusted_Connection=Yes");

//命令
cmd = new SplCommand("{call CustOrderHist (?)}", cn);

prm = cmd.Parameters.Add("@CustomerID", OdbcType.Char, 5);
prm.Value = "ALFKI";

cn.Open();

dr = cmd.ExecuteReader();

//读出数据
while (dr.Read())
Console.WriteLine(dr.GetString(0));

//Clean up.
dr.Close();
cn.Close();
}
catch (SplException o) {
MessageBox.Show(o.Message.ToString());

运行该项目。此代码调用"CustOrderHist"存储过程,传递 CustomerID 作为单输入参数并返回一个结果集。在输出窗口中,您应该看到罗斯文顾客 ALFKI 订购的产品列表。

多参数类型 <script type="text/javascript">loadTOCNode(2, 'summary');</script>

1.使用 Query Analyzer,在罗斯文示例数据库中创建以下存储过程:此存储过程接受将 CustomerID 作为输入参数并返回一个顾客订单列表,返回顾客支付的每个订单的平均运费作为输出参数,返回顾客的订单数作为返回值。

CREATE PROCEDURE usp_TestParameters
@CustID CHAR(5),
@AvgFreight MONEY OUTPUT
AS
SELECT @AvgFreight = AVG(Freight) FROM Orders WHERE CustomerID = @CustID
SELECT * FROM Orders WHERE CustomerID = @CustID

 

将按钮的 Click 事件过程替换为以下代码:

SplConnection cn;

try{
cn = new SplConnection("Server=servername;Database=Northwind;Trusted_Connection=Yes");

SplCommand cmd = new SplCommand("{? = call usp_TestParameters (?, ?)}", cn);

OdbcParameter prm = cmd.Parameters.Add("@RETURN_VALUE", OdbcType.Int);
prm.Direction = ParameterDirection.ReturnValue;

prm = cmd.Parameters.Add("@CustomerID", OdbcType.Char, 5);
prm.Value = "ALFKI";

prm = cmd.Parameters.Add("@AvgFreight", OdbcType.Double);
prm.Direction = ParameterDirection.Output;

cn.Open();
SplDataReader dr = cmd.ExecuteReader();

while (dr.Read())
Console.WriteLine(dr.GetString(0));

dr.Close();
cn.Close();

Console.WriteLine("Average Freight (output param):{0}", cmd.Parameters[2].Value);
Console.WriteLine("Order Count (return value):{0}", cmd.Parameters[0].Value);

}

catch (SplException o) {
MessageBox.Show(o.Message.ToString());
}
RETURN @@ROWCOUNT

运行该项目。此代码调用在上述步骤 1 中创建的"usp_TestParameters"存储过程,传递 CustomerID 作为单输入参数,并返回一个结果集和一个输出参数作为返回值。在输出窗口,您应看到罗斯文顾客 ALFKI 订购的产品列表、顾客为每个订单支付的平均运费和订单数。


 

{? = CALL Procedure1 (?, ?)

 

{CALL CustOrderHist (?)}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值