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

解决方案 »

  1.   

    adoquery是ado控件,调用ora不行吧,应该使用dbexpress或专用的ora控件
      

  2.   

    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;
      

  3.   

    //**********************************************
    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"
    是怎么回事请给予解答,谢谢. 
      

  4.   

    1.COMM."HANDLE_INSUR_ALLDATA" 你这里怎么有个双引号。
    2.如果当然连接的用户不是COMM,那要加前缀
      

  5.   

    问题已经解决,但想多问俩句:
    为什么在PL/sql 中用 execute
    而在delphi 中用 call
    前台调用存储过程时不都是应该用Oracle 的语法来写吗?