ODBC调用sybase的存储过程

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 jialiang 的 blog

create procedure test
@icount  integer, 
@dtmodifytime  datetime, 
@dcquantity  decimal(20,2) output  
as  
.....
在程序中调用这个存储过程,代码如下
try
{
odbccommand cmd = new odbccommand();
cmd.connection = dbconnection;
cmd.commandtext = "test";
cmd.commandtype = commandtype.storedprocedure;
cmd.parameters.add("@icount",odbctype.int);
cmd.parameters[0].value = 10;
cmd.parameters.add("@dtmodifytime",odbctype.datetime);
cmd.parameters[1].value = convert.todatetime("2005-2-25 00:00:00");
cmd.parameters.add("@dcquantity",odbctype.numeric);
cmd.parameters[2].direction = parameterdirection.output;
cmd.executenonquery();
float num = (float)cmd.parameters["dcquantity"].value;
messagebox.show(num.tostring());
}
catch(odbcexception oe)
{
messagebox.show(oe.message);
}
程序执行到cmd.executenonquery();会抛出异常
error [hy000] [intersolv][odbc sql server driver][sql server]procedure up_shizelastbm expects parameter @icount, which was not supplied.
error [hy000] [intersolv][odbc sql server driver][sql server]procedure up_shizelastbm expects parameter @dtmodifytime, which was not supplied.
error [hy000] [intersolv][odbc sql server driver][sql server]procedure up_shizelastbm expects parameter @dcquantity, which was not supplied.

需要改为:
datetime dt = new datetime(2005,1,10);
odbccommand cmd = new odbccommand();
cmd.connection = dbconnection;
cmd.commandtext = "test ?,?,?";
cmd.commandtype = commandtype.storedprocedure;
cmd.parameters.add("@icount",odbctype.int);
cmd.parameters[0].value = 10;
cmd.parameters.add("@dtmodifytime",odbctype.datetime);
cmd.parameters[1].value = dt;
cmd.parameters.add("@dcquantity",odbctype.double);
cmd.parameters[2].direction = parameterdirection.output;
cmd.executenonquery();
double num = convert.todouble(cmd.parameters[3].value);
messagebox.show(num.tostring());

本文关键:ODBC调用sybase的存储过程
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top