博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

有关存储过程的学习......

Posted on 2007-06-18 17:32  jisen  阅读(299)  评论(0编辑  收藏  举报

以前只是对sql server 2000下的存储过程进行C#程序调用,发现一个问题,用正常(我认为)的调用方式从来就没有成功过?至今也不知道原因,代码如下:还请高人指点,
System.Data.Odbc.OdbcConnection OdbcCon =
 new System.Data.Odbc.OdbcConnection("....");
System.Data.Odbc.OdbcCommand Com = new System.Data.Odbc.OdbcCommand();
Com.Connection = OdbcCon;
Com.CommandType = System.Data.CommandType.StoredProcedure;

Com.CommandText = "PProcedure";

System.Data.Odbc.OdbcParameter odbcp1 = new System.Data.Odbc.OdbcParameter("@sqltext",System.Data.Odbc.OdbcType.VarChar);
odbcp1.Value = "select * from AAA";
Com.Parameters.Add(odbcp1);

System.Data.Odbc.OdbcParameter odbcp2 = new System.Data.Odbc.OdbcParameter("@count",System.Data.Odbc.OdbcType.Int);
odbcp2.Value = 50;
Com.Parameters.Add(odbcp2);

System.Data.Odbc.OdbcParameter odbcp3 = new System.Data.Odbc.OdbcParameter("@number",System.Data.Odbc.OdbcType.Int);
odbcp3.Value = 0;
Com.Parameters.Add(odbcp3);

System.Data.Odbc.OdbcParameter odbcp4 = new System.Data.Odbc.OdbcParameter("@sqlcondition",System.Data.Odbc.OdbcType.VarChar);
odbcp4.Value = "";
Com.Parameters.Add(odbcp4);

System.Data.Odbc.OdbcParameter odbcp5 = new System.Data.Odbc.OdbcParameter("@icount",System.Data.Odbc.OdbcType.Int);
odbcp5.Direction = System.Data.ParameterDirection.Output;
 
Com.Parameters.Add(odbcp5);
System.Data.Odbc.OdbcDataAdapter odbcdataapater = new System.Data.Odbc.OdbcDataAdapter();
odbcdataapater.SelectCommand = Com;


System.Data.DataSet Ds = new System.Data.DataSet();
odbcdataapater.Fill(Ds,"AAA");肯定报错!
因此从internet查询call的调用能够方法
string call = "{call pk_wt.PageProcedure(?,?,?,?,?,?)}";
Com.CommandText = call;
Com.CommandType = System.Data.CommandType.StoredProcedure;
然后其它不变就可以成功。
然而今天在C#调用oracle中的存储过程也发现以上问题,后来不得不修改调用方式,看来
string call = "{call pk_wt.PageProcedure(?,?,?,?,?,?)}";
Com.CommandText = call;这种方式还是比较通用的。