c#中调用存储过程(200分)

  • 主题发起人 主题发起人 haiyang2008
  • 开始时间 开始时间
H

haiyang2008

Unregistered / Unconfirmed
GUEST, unregistred user!
oracle的包:
CREATE OR REPLACE PACKAGE PKG_GCGL is
type type_cur is ref cursor;
procedure proc_return_login(ddid in varchar2,typecur out type_cur);

end pkg_gcgl;

CREATE OR REPLACE PACKAGE BODY PKG_GCGL is
procedure proc_return_login(ddid in varchar2,typecur out type_cur) as
begin
open typecur for
select V_yhdm,V_xm,V_ddid,V_mm,C_sfyx,I_bmdm
from pt_yhmc where v_ddid=ddid;
end proc_return_login;
end pkg_gcgl;
请问如何再c#中调用proc_return_login使数据显示在datagrid中;
 
利用oracleConnection,oracleCommand,OracleAdapter,DataSet
 
OracleCommand myCommand =
new OracleCommand("proc_return_login", myConnection.Connection); //建立一个Command,并传入存储过程的名称
myCommand.CommandType = CommandType.StoredProcedure; //指定Command类型为存储过程
OracleParameter typecur =
myCommand.Parameters.Add("typecur", OracleType.Cursor);
OracleParameter ddid =
myCommand.Parameters.Add("ddid", OracleType.VarChar);
myCommand.ExecuteNonQuery();
 
具体的请看MSDN
 
提示找不到存储过程!!怎么办?
 
看看你的数据库连接是不是有问题, 在查询分析器中执行一下看看如何
 
直接用存储过程可以,但用包中的存储过程就会报错 怎么办?
 
这个我也不太清楚了,是不是在指定存储过程名时要指定包的名字?像这样:OracleCommand myCommand =
new OracleCommand("PKG_GCGL.proc_return_login", myConnection.Connection);
你试试看
 
这正是我迷惑的,我这样用也不行。不知有没有别的办法。
 
我在MSDN中找到了,OracleCommand cursCmd = new OracleCommand("CURSPKG.OPEN_TWO_CURSORS", oraConn);
cursCmd.Parameters.Add("EMPCURSOR", OracleType.Cursor).Direction = ParameterDirection.Output;
cursCmd.Parameters.Add("DEPTCURSOR", OracleType.Cursor).Direction = ParameterDirection.Output;
是这样用的
 
你好好看看 MSDN, 应该是这样用的.
 
在你机器上可以吗,我这边还是提示出错。
 
我这里没有oracle,没办法试,我看了MSDN上是这样用的.
 
好了,我这边用程序已经可以实现了,用控件还是不行。我再试试吧。多谢你了,散分。
 
多人接受答案了。
 
后退
顶部