遇到这样一个问题:在用Delphi怎样用存储过程调用Oracle存的函数?怎样设置存储过程的参数?返回值参数怎么设置?如能提供示例代码,万分感谢!
//附 Oracle函数定义--设置接收标记
FUNCTION SetRecMark(p_IACNo VARCHAR2,p_VerifyCode VARCHAR2) RETURN VARCHAR2
IS
CURSOR cursor_MDIACRecord IS
SELECT OppNo,RecMark
FROM SYSMD_IACRecord
WHERE IACNo = p_IACNo;
v_RI cursor_MDIACRecord%ROWTYPE;
BEGIN
OPEN cursor_MDIACRecord;
FETCH cursor_MDIACRecord INTO v_RI;
IF cursor_MDIACRecord%NOTFOUND THEN
CLOSE cursor_MDIACRecord;
RETURN '交互号不正确!';
END IF;
CLOSE cursor_MDIACRecord;
IF NOT iVerifyOpp(v_RI.OppNo,p_VerifyCode) THEN
RETURN '验证码无效!';
END IF;
IF v_RI.RecMark = '!' OR TRIM(v_RI.RecMark) IS NULL THEN
UPDATE SYSMD_IACRecord SET
RecMark = '#',
RecTime = TO_CHAR(SYSDATE,'yyyymmddhh24miss')
WHERE IACNo = p_IACNo;
COMMIT;
RETURN NULL;
ELSE
RETURN '已经设置过接收标记!';
END IF;
EXCEPTION WHEN OTHERS THEN
ROLLBACK;
RETURN '设置接收标记时异常:'|| CHR(13)||CHR(10) || '错误号:' || SQLCODE ||CHR(13)||CHR(10)|| '错误信息:'||SQLERRM;
END;
// mylstlot:= my_ADODB.create();
// mylstlot.ConnectDB(DMDBstr1);
// setlength(procparameter,1);
// procparameter[0]:=account;
// ADOStoredProc1: TADOStoredProc;
ADOStoredProc1:=mylstlot.RunStoredProc('PKG_DM_CPutility.sp_get_account_group',procparameter);
//procparameter传入参数数组
{function my_ADODB.RunStoredProc(ProcName:string;ProcPara:array of string) :TADOStoredProc;
var
ADOStoredProc1: TADOStoredProc;
i:integer;
begin
ADOStoredProc1:=TADOStoredProc.Create(nil);
ADOStoredProc1.Create(nil);
with ADOStoredProc1 do
begin
Connection := ADOConnection1;
Parameters.Clear;
ProcedureName:= ProcName;
for i:= 0 to length(ProcPara)-1 do
begin
Parameters.CreateParameter(ProcPara[i],ftstring ,pdInput,1000,ProcPara[i]);
end;
Open;
end;
result:=ADOStoredProc1;
end;}