c#调用oracle存储过程问题

zbluestar 2013-08-31 10:48:31
存储过程(在PLSQL中调试没错):
create or replace procedure PROC_StudentInfo_SEL(studentid varchar2,
studentinfo OUT SYS_REFCURSOR) is
begin
open studentinfo for
select * from scott.student where scott.student.studentid = studentid;
end PROC_StudentInfo_SEL;

C#程序:
_conn.Open();
ConnectionState state = _conn.State;
_command = new OracleCommand();
_command.Connection = _conn;
//_command.Transaction = _conn.BeginTransaction();
_command.CommandType = CommandType.StoredProcedure;
_command.CommandText = "Scott.PROC_StudentInfo_SEL";

OracleParameter para = new OracleParameter("studentid", OracleType.VarChar, 2000);
para.Direction = ParameterDirection.Input;
para.Value = "001";
_command.Parameters.Add(para);

para = new OracleParameter("studentinfo", OracleType.Cursor);
para.Direction = ParameterDirection.Output;
_command.Parameters.Add(para);
OracleDataAdapter adapter = new OracleDataAdapter(_command);
DataTable table = new DataTable();
adapter.Fill(table);
打开数据库也没问题,执行到adapter.fill时,出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'SCOTT.PROC_STUDENTINFO_SEL'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored

请教各位高手,这是什么问题。
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 zbluestar 的回复:
scott这个用户没有这个存储过程,但是已经给了scott用户管理员权限
scott没这个存储过程,当然就调不成功了,存储过程在哪个schema下面就应该用哪个,相当于命名空间了
zbluestar 2013-08-31
  • 打赏
  • 举报
回复
scott这个用户没有这个存储过程,但是已经给了scott用户管理员权限
  • 打赏
  • 举报
回复
SCOTT用户中有PROC_STUDENTINFO_SEL这个存储过程吗,你当前用户有该过程的执行权限吗,很可能是权限的问题

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧