用Tadoquery调用oracle的存储过程的问题.

钞票搬运工 2012-12-19 03:23:30
我在Oracle中创建了一个存储过程,如下:
//**********************************************
CREATE OR REPLACE PROCEDURE COMM."HANDLE_INSUR_ALLDATA" (Vstart_date date, Vend_date date)
-------------
-------------------
---------------
{在Oracle中可以正常编译},用PL/sql调用正常;
//**********************************************



我在程序里用如下语句:
//*******************
adoquery1.close
adoquery1.sql.clear;
adoquery1.sql.add('execute comm.handle_insur_alldata
(to_date(''2010-01-01'',''yyyy-mm-dd''),to_date(''2010-10-31'',''yyyy-mm-dd''))');
adoquery1.execsql;
//*********************


执行后报错:"ORA-00900 :invalid SQL statement"
同样的语句我在PL/SQL中执行正常;不知是何原因,请各位高手给予解答.谢谢.





//*******************
...全文
201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgywell 2012-12-31
  • 打赏
  • 举报
回复
工具不同 调用的语法也不同
钞票搬运工 2012-12-29
  • 打赏
  • 举报
回复
问题已经解决,但想多问俩句: 为什么在PL/sql 中用 execute 而在delphi 中用 call 前台调用存储过程时不都是应该用Oracle 的语法来写吗?
我看见佛 2012-12-20
  • 打赏
  • 举报
回复
1.COMM."HANDLE_INSUR_ALLDATA" 你这里怎么有个双引号。 2.如果当然连接的用户不是COMM,那要加前缀
钞票搬运工 2012-12-19
  • 打赏
  • 举报
回复
//********************************************** adoquery1.sql.add('Call comm.handle_insur_alldata (to_date(''2010-01-01'',''yyyy-mm-dd''),to_date(''2010-10-31'',''yyyy-mm-dd''))'); adoquery1.execsql; //************************************ 照你的写法加了call但又出现 "ORA-06576 not a valid function or procedure name" 是怎么回事请给予解答,谢谢.
我看见佛 2012-12-19
  • 打赏
  • 举报
回复
adoquery1.sql.add('Call comm.handle_insur_alldata (to_date(''2010-01-01'',''yyyy-mm-dd''),to_date(''2010-10-31'',''yyyy-mm-dd''))'); adoquery1.execsql;
UnkownState 2012-12-19
  • 打赏
  • 举报
回复
adoquery是ado控件,调用ora不行吧,应该使用dbexpress或专用的ora控件

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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