在delphi中我使用Tstoreproc 控件调用存储过程是可以的,但是使用TQuery控件的时候有问题。我用的是oracle 8i,BDE里面的设置应该没问题。下面的是代码:CREATE OR REPLACE PACKAGE Typedefine IS
TYPE mytype IS RECORD
(LOTID VARCHAR (40) ,
SHIFT VARCHAR (2) ,
PRODUCTNAME VARCHAR (40) );
TYPE my_cursor IS REF CURSOR RETURN mytype ;
END ;
CREATE OR REPLACE PROCEDURE sdb_test
(enddate IN VARCHAR2,startdate IN VARCHAR2,
Eqpid IN VARCHAR2,my_cursor IN OUT Typedefine.my_cursor)
IS
BEGIN
OPEN my_cursor FOR
SELECT lotid,shift,productname
FROM
temp_table
where shiftenddate=enddate
and shiftstartdate=startdate
ORDER BY txntimestamp ;
END ;Query1.close;
Query1.clear ;
Query1.SQL.Add('begin SDB_TEST (''20021208'',''20021201'',''ABCD01'') ; end ;') ;
Query1.open ;错误信息是:Encountered the symbol '''' The symbol '''' was ignored.'.Process stopped.我查了好久都找不到原因,请高手指教,在线等待,谢谢!!
TYPE mytype IS RECORD
(LOTID VARCHAR (40) ,
SHIFT VARCHAR (2) ,
PRODUCTNAME VARCHAR (40) );
TYPE my_cursor IS REF CURSOR RETURN mytype ;
END ;
CREATE OR REPLACE PROCEDURE sdb_test
(enddate IN VARCHAR2,startdate IN VARCHAR2,
Eqpid IN VARCHAR2,my_cursor IN OUT Typedefine.my_cursor)
IS
BEGIN
OPEN my_cursor FOR
SELECT lotid,shift,productname
FROM
temp_table
where shiftenddate=enddate
and shiftstartdate=startdate
ORDER BY txntimestamp ;
END ;Query1.close;
Query1.clear ;
Query1.SQL.Add('begin SDB_TEST (''20021208'',''20021201'',''ABCD01'') ; end ;') ;
Query1.open ;错误信息是:Encountered the symbol '''' The symbol '''' was ignored.'.Process stopped.我查了好久都找不到原因,请高手指教,在线等待,谢谢!!
Query1.clear ;
Query1.SQL.Add('exec SDB_TEST ''20021208'',''20021201'',''ABCD01'' ') ;
Query1.open ;
Oracle没有操作过存储过程。
你的问题看看是否单引号原因,试试双引号。
execute sdb_test 是不是不返回结果的。另,我用的就是双引号呀?不明白。
Query1.SQL.Add('execute SDB_TEST('+''''+'20021208'+','+''''+'20021201'+''''+','+''''+'ABCD01'+''''+')';
另,我用storeproc的时候,我只用了3个参数,没有用cursor就可以了,我不
知道TQuery控件是不是一定要用四个参数,请帮忙,谢谢!!