我创建了一个存储过程,用于从department
表中选择部门信息,然后从C#中调用它,但是数据未加载到数据网格视图中。
此过程版本的Oracle 11G,这是我的SQL代码:
create or replace PROCEDURE PROCEDURE_SELECT_DEPARTMENT as c1
SYS_REFCURSOR;
BEGIN
OPEN c1 FOR
SELECT DEPARTEMENTID, DEPARTMENTNAME
FROM TABLEDEPARTMENT;
END;
这是我的C#代码:
OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["con"].ToString());
DataTable dt = new DataTable();
con.Open();
OracleCommand cmd = new OracleCommand("PPROCEDURE_SELECT_DEPARTMENT", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
OracleDataAdapter da = new OracleDataAdapter(cmd);
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
当我加载网格时,数据不会出现。
答案 0 :(得分:2)
尽管语法正确,但是您对过程的定义不正确。就目前而言,变量c1在过程中是局部的。游标被打开,但是随后什么也不做。您需要将c1定义为该过程的out参数。
create or replace procedure
procedure_select_department(c1 out sys_refcursor)
as
begin
open c1 for
select departementid, departmentname
from tabledepartment;
end;
现在,这会将光标返回到您的程序。不幸的是,我对c#知之甚少,也不知道您将需要如何修改该语句才能调用该过程。