2

さて、私はTIKEtというテーブルからすべてのフィールドを取得するのを助けるためにSPを構築しようとしています。ここに私のテーブルTIKETがあります:

テーブルチケット:
IDTIKET タイプ番号
NOMBRE TYPE VARCHAR2
エディトリアル タイプ VARCHAR2
自動タイプ VARCHAR2
EDICION タイプ VARCHAR2
プレシオ型番
カンチダッド型番号、
FECHA TYPE DATE デフォルトの sysdate
NOMBRE_USER タイプ VARCHAR2

ここに私のSPコードがあります:

`create or replace procedure get_tiket
(
 idtiket_ out number,
 nombres_ out varchar2,
 editorial_ out varchar2,
 autor_ out varchar2,
 edicion_ out varchar2,
 precio_ out number,
 cantidad_ out number,
 fecha_ out date,
 nombre_user_ in varchar2
)
is 
begin
select idtiket, nombre, editorial, autor, edicion, precio, cantidad, fecha into idtiket_, nombres_, editorial_, autor_, edicion_, precio_, cantidad_, fecha_ from tiket
where nombre_user=nombre_user_;
end;

/`

SQLPLus でこのコードを実行すると、「プロシージャが作成されました」と表示されますが、これは問題ないと思います。しかし、私がこのSpを呼び出したとき: exec get_tiket('ale'); それは私にこのエラーを与えます:

call get_tiket('ale');

1 行目のエラー:

ORA-06553: PLS-306: 'GET_TIKET'のコールで引数の数またはタイプが間違っています

私が欲しいのは、必要なユーザーに応じてテーブル TIKET からすべてのフィールドを取得することです! よろしくお願いします!

4

1 に答える 1

1

ストアド プロシージャには大量のパラメータがあり、それらも渡す必要があります。

DECLARE idtiket number;
-- other variables
BEGIN
  EXEC get_tiket(idtiket, ..... 'ale');
END; 

また、この場合、関数はプロシージャよりもうまく機能すると思います...

于 2012-12-11T16:58:06.507 に答える