我用的是ORACE,存储过程定义如下:
CREATE PROCEDURE UpdateSon(Pno in char,Eno out integer,Lno out char)
我是这样调用的:
char* strSQL = new char[200];
int error = 0 ;
char * itemno= new char[14];
strcpy(itemno,"");
sprintf(strSQL,"{call UpdateSON('%s','%d','%s')}",m_Btl.ItemNo,error,itemno);
TRY
{
m_Mxl.m_pframetempset.m_pDatabase->ExecuteSQL(strSQL);
}
CATCH(CDBException,e)//出错处理
{
AfxMessageBox(e->m_strError);
}
END_CATCH
出现以下错误:
ORA-06550: 第 1 行, 第 36 列:
PLS-00363: 表达式 '0' 不能用作赋值目标
ORA-06550: 第 1 行, 第 41 列:
PLS-00363: 表达式 '' 不能用作赋值目标
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
这是怎么回事?我这些语句在哪些地方有问题?谢了
CREATE PROCEDURE UpdateSon(Pno in char,Eno out integer,Lno out char)
我是这样调用的:
char* strSQL = new char[200];
int error = 0 ;
char * itemno= new char[14];
strcpy(itemno,"");
sprintf(strSQL,"{call UpdateSON('%s','%d','%s')}",m_Btl.ItemNo,error,itemno);
TRY
{
m_Mxl.m_pframetempset.m_pDatabase->ExecuteSQL(strSQL);
}
CATCH(CDBException,e)//出错处理
{
AfxMessageBox(e->m_strError);
}
END_CATCH
出现以下错误:
ORA-06550: 第 1 行, 第 36 列:
PLS-00363: 表达式 '0' 不能用作赋值目标
ORA-06550: 第 1 行, 第 41 列:
PLS-00363: 表达式 '' 不能用作赋值目标
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
这是怎么回事?我这些语句在哪些地方有问题?谢了
解决方案 »
- 缺思路。。。
- ado+sql创建表
- 如何使用MFC保存飞信的聊天记录
- 由于插入的D L L在进程的寿命期中早早地就进行了加载,因此在调用函数时应该格外小心。调用k e r n e l 3 2 . d l l中的函数时应该不会出现什么问题,不过调用其他D L L中的函数时就可能产生一些问题。
- 函数指针的问题
- 求解: 网络解决方案 -- 数据量不大的商店, 和总部的实时远程数据交换
- 怎么帮CRichEditView设背景图片???
- WIN7怎么用VC6.0
- 【求助】API写控制台输出如何兼容重定向?
- 不使用MFC,用纯C++实现对excel表格的导入导出,包括单元格和字体的设置。
- 郁闷阿郁闷!!!
- 急!关于三维展示
sprintf(strSQL,"{call UpdateSON('%s',%d,'%s')}",m_Btl.ItemNo,error,itemno);
注意一下在Oracle中创建存储过程是否正确,一定要保证存储过程正确。
CATCH(CDBException,e)//出错处理
{
AfxMessageBox(e->m_strError);
}
应该为:
CATCH(CDBException *e)//出错处理
{
AfxMessageBox(e->m_strError);
}
--------------------
这几个问题说明你没有仔细进行过调试。
最好自己先好好想想。
存储过程别人已在DELPHI中已调,没有问题
我的
CATCH(CDBException,e)//出错处理
{
AfxMessageBox(e->m_strError);
}
也行,不信你试试
我试了:
sprintf(strSQL,"{call UpdateSON('%s',%d,'%s')}",m_Btl.ItemNo,error,itemno);
问题依旧
非常感激你的帮助!!!!
http://expert.csdn.net/Expert/topic/1173/1173605.xml?temp=.2388117
http://expert.csdn.net/Expert/topic/1184/1184458.xml?temp=.6566584我记得回过这个帖子啊。难道提交失败了?
我按你的方法实现如下:
char* strSQL = new char[200];
int error = 0;
char * itemno= new char[14];
strcpy(itemno,"");
sprintf(strSQL,"{call UpdateSON('%s','error','itemno')}",m_Btl.ItemNo);
if (m_Mxl.m_pframetempset.IsOpen())
m_Mxl.m_pframetempset.Close();
TRY
{
m_Mxl.m_pframetempset.m_pDatabase = m_Mxl.m_pframeSet.m_pDatabase;
m_Mxl.m_pframetempset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
}
CATCH(CDBException,e)//出错处理
{
AfxMessageBox(e->m_strError);
}
END_CATCH
出现以下错误:
Syntax error or access violation
怎么回事,怎么办???
我用这种方法调存储过程,不带参数的存储过程也出现这种错误(Syntax error or access violation),但是ORACLE中数据已经改变了,真不知道这是为什么?