如题:存储过程肯定是存在的,表也是存在的,但不知道什么,总是失败。
[2004-12-06 19:06:37]oexec() Sp() 失败,原因:ORA-06550: line 1, column 7:
PLS-00201: identifier 'SP_TEST' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
我把存储过程换成一个select 语句,提示:
原因:ORA-00942: table or view does not exist
只有 sprintf(sqlText,"select sysdate from dual ");才没有问题。
小弟调试了N次还是这个问题,数据库用户是dba,我在网上找了一下,一个帖子说是参数名要一致,这个我也是这样的,但就是不行,大家帮我想想可能的原因,先谢谢了。第一次使用oci。全部照着例子。
[2004-12-06 19:06:37]oexec() Sp() 失败,原因:ORA-06550: line 1, column 7:
PLS-00201: identifier 'SP_TEST' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
我把存储过程换成一个select 语句,提示:
原因:ORA-00942: table or view does not exist
只有 sprintf(sqlText,"select sysdate from dual ");才没有问题。
小弟调试了N次还是这个问题,数据库用户是dba,我在网上找了一下,一个帖子说是参数名要一致,这个我也是这样的,但就是不行,大家帮我想想可能的原因,先谢谢了。第一次使用oci。全部照着例子。
解决方案 »
- 大侠们,你们的F5键辛苦了,网友们表示感谢。
- 关于MFC中使用CSocket的问题?
- 请高手帮忙看下!问题出在哪了?
- 如何连接对话框
- 如何获得当前进程的线程数量
- 关于GetDlgItem函数的提问
- 串口通信,用MSCOMM控件的问题。
- MDI多窗口谁做过?怎么在MDI的背景上显示一副背景图片
- MFC dll中 一用了ActiveMovieControl别的程序就不能调用了,怎么解决?
- IDirectDrawSurface7::Blt returned E_INVALIDARG , why ?
- 在对话框应用程序中添加工具条。
- 如何在windwos 窗体上显示一个硬盘上图象文件(比如jpg bmp)
PLS-00201: identifier 'TEST.SP_TEST' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
还是这样,是不是TEST没有表的权限,但是我用test进去,可以看到sp_test,这个存储过程也是我刚才在test下创建的。大家再帮帮我
{
char sqlText[512]; char Number[21];
int OutResult = 1;
strcpy(Number,(LPCTSTR)mNumber );
sprintf(sqlText,"begin %s.Sp_TEST(:Number,:OutResult); end;",m_userID); text * execText = (text *)sqlText;
if(oparse(&cdaall,execText,-1,1,2))
{
CloseDatabase();
if( OpenDatabase() != JFK_Error_OK )
{
m_logfile->Trace(0,"\t!!!!!!! reopen db for _Resume fail() !!!!!!!\n");
return RETURN_FAIL;
} if(oparse(&cdaall,execText,-1,1,2))
{
m_logfile->Trace(0,"\t!!!!!!! oparse() 失败 !!!!!!!\n");
return RETURN_FAIL;
}
}
if(obndrv(&cdaall, (ub1 *)":Number", -1,
(ub1 *)&( CardNumber ), (sword)sizeof( Number ),
SQLT_STR, -1, (sb2 *) 0, (text *) 0, -1, -1))
{
m_logfile->Trace(0,"\t!!!!!!! obndrv()Number 失败 !!!!!!!\n");
return RETURN_FAIL;
}
if(obndrv(&cdaall, (ub1 *)":OutResult", -1,
(ub1 *)&(OutResult), (sword)sizeof(OutResult),
INT_TYPE, -1, (sb2 *) 0, (text *) 0, -1, -1))
{
m_logfile->Trace(0,"\t!! obndrv() OutResult 失败 !\n");
return RETURN_FAIL;
}
if(oexec(&cdaall))
{
text errormsg[900]="";
oerhms(&ldaall, cdaall.rc, errormsg, (sword) sizeof (errormsg));
m_logfile->Trace(0,"\t!!!!!!! oexec() Sp_TEST 失败,原因:%s !\n",errormsg);
return RETURN_FAIL;
} if (ocom(&ldaall))
{
m_logfile->Trace(0,"\t!!!!!!! ocom() Sp_TEST失败 !!!\n");
return RETURN_FAIL;
} return OutResult;
}以上没有语法错误,语句也是正确的。要不
为什么报错是: identifier 'TEST.SP_TEST' must be declared
我用TOAD运行语句是正确的。还不知道原因,大家多帮帮忙,提示一下可能的情况。
我运行上面语句,执行正确。