用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中执行正常;不知是何原因,请各位高手给予解答.谢谢.





//*******************
...全文
148 点赞 收藏 7
写回复
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控件
回复 点赞
发动态
发帖子
数据库相关
创建于2007-08-02

1211

社区成员

8.8w+

社区内容

Delphi 数据库相关
社区公告
暂无公告