掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
オラクルのストアドを実行するには? (ID:32753)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
お世話になっております。 ADOStoredProcを使って、テキストボックスに入力した顧客番号を、 ストアドへ渡し顧客名を取得する単純なものなのですが、 下記のエラーが出て困っています。 ご教授お願いできませんでしょうか。 環境: Delphi2005 Oracle10g WinXp ■エラーメッセージ ORA-06550: 行1、列7: PLS-00306: 'FNCCUSTNAME_GET'の呼び出しで、引数の数または型が正しくありません。 ORA-06550: 行1、列7: PL/SQL: Statement ignored. ■ストアド CREATE OR REPLACE FUNCTION fncCustName_Get(param_cust_no IN customer.cust_no%TYPE) RETURN VARCHAR2 AS ret_cust_name customer.cust_name%TYPE; BEGIN select cust_name into ret_cust_name from customer where cust_no = param_cust_no; RETURN(ret_cust_name); EXCEPTION when no_data_found then RETURN(-1); END fncCustName_Get; / ■SQL*Plusで実行すると set serveroutput on declare disp_cust_name varchar2(48); begin disp_cust_name:= fncCustName_Get(3027); dbms_output.put_line(disp_cust_name); end; / 顧客名は取得できます。 ■デルファイソース procedure TfrmStoredProc.btnCustNameClick(Sender: TObject); var intCustNo:integer; begin try intCustNo:=strToInt(edtCustNo.Text); with DMStoredProc.ADOStoredProc1 do begin Connection:= ADOCnn; ProcedureName := 'fncCustName_Get'; Parameters.Clear; Parameters.CreateParameter('param_cust_no',ftInteger,pdInput,0,intCustNo); Parameters.CreateParameter('ret_cust_name',ftString,pdReturnValue,48,null); ExecProc; //open;でも同様のエラーが発生します。 lblCustName.Caption:= VarToStr(Parameters.ParamByName('ret_cust_name').Value); end; except on E: Exception do MessageDlg(E.Message, mtWarning, [mbOK], 0); end; end; ストアドへパラメータが渡されていないのですが、 ヘルプやデモファイルを見ると paNullable paLong paSigned などのプロパティ?があり、 設定不足かと考えていますが分かりません。 どうぞ宜しくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.