1

ストアドプロシージャを処理するDelphiアプリケーションに取り組んでいます。insertステートメントのストアドプロシージャを作成しましたが、アプリケーションで正常に機能します。さて、selectステートメントにも同じものを作成したいと思いました。

CREATE TYPE list_all_firstname AS ( first_name character varying);  

CREATE FUNCTION select_sp()   
RETURNS SETOF list_all_firstname AS  
$$  
DECLARE  
rec record;  
BEGIN  
  FOR rec IN (SELECT first_name FROM person) LOOP  
  RETURN NEXT rec;  
END LOOP;  
END;  
$$ LANGUAGE plpgsql;  

呼び出しは次のとおりです。

SELECT * FROM select_sp();

これまで、postgresではすべてが正常です。delphiアプリケーションでこのストアドプロシージャにアクセスしたかったのです。私のコードは次のとおりです。

 with StoredProc2 do begin
     StoredProcName :='select_sp';
     ExecProc;
     Edit5.Text:=ParamByName('list_all_firstname').AsString ;
    end;

しかし、「オブジェクトが見つかりませんでした」というエラーが表示されます。delphiのストアドプロシージャの戻り値にアクセスするにはどうすればよいですか?

4

1 に答える 1

1

私は答えを得ました。。オブジェクトが見つからなかったのはBDEエラーです...次は値へのアクセスです。ストアドプロシージャコンポーネントを使用する必要はありません。以下のようにTQueryを使用できます...:

  Query1.SQL.Clear;
  Query1.SQL.Add('SELECT * FROM select_sp()');
  Query1.Active := True;

  for i:=0 to Query1.RowsAffected-1 do
          begin
             sval:=Query1.FieldByName('first_name').AsString;
             ShowMessage(sval);
             Query1.Next;
          end;
于 2012-05-28T11:03:17.833 に答える