BCB调用ORACLE 8的存储过程的问题!!!!
yiwei 2001-02-12 05:23:00 存储过程如下:
CREATE OR REPLACE PROCEDURE insert_into_calllog
(
use_line_no IN INT,
calling_number IN VARCHAR,
called_number IN VARCHAR,
area_code IN INT,
new_record_id OUT INT
)
AS
BEGIN
INSERT INTO calllog (logid,uselineno,callingnumber,callednumber,areacode)
VALUES (account_seed_calllog.nextval,use_line_no,calling_number,called_number,area_code);
SELECT account_seed_calllog.currval INTO new_record_id FROM calllog;
END;
BCB里用TADOStoredProc调用代码如下:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString a;
int t=0;
a="55555555";
test->Parameters->CreateParameter("use_line_no",ftInteger,pdInput,sizeof(int),10);
test->Parameters->CreateParameter("calling_number",ftString,pdInput,9,a);
test->Parameters->CreateParameter("called_number",ftString,pdInput,9,a);
test->Parameters->CreateParameter("area_code",ftInteger,pdInput,sizeof(int),10);
test->Parameters->CreateParameter("new_record_id",ftVariant,pdOutput,sizeof(int),10);
test->ExecProc();
ShowMessage((AnsiString)test->Parameters->ParamValues["new_record_id"]);
}
问题是,这段代码初次运行时(第一次建表,建SEQUENCE,空表时),没有问题,可以得到SEQUENCE的值1;再次运行就会出错,开始是exact fetch returns more than requested number of rows,如果不关闭程序,再来一次,就是wrong number or type of arguments in call to 'INSERT_INTO_CALLLOG'。
高手帮帮忙,怎么办啊?