0

データベースに格納されたデータと相互作用しない pl/sql プロシージャを作成して使用することは、簡単に作成および実行できますが、明らかに用途が限られています。

しかし、そのような保存されたデータを操作するのに苦労しています。

たとえば、次の関数を使用します。

CREATE OR REPLACE PROCEDURE update_emp (emp_rec CONTACT%ROWTYPE) IS

  fistname VARCHAR (40);
  BEGIN
  firstname := TRIM(fname);
        UPDATE contact
        SET    FNAME = firstname
        WHERE CONTACT_ID = emp_rec.id;
   END update_emp;
   /

これは、列 FNAME と主キー CONTACT_ID を含む CONTACT テーブルで機能するように設計されています。上記のコードはコンパイル エラーをスローします。

識別子「FNAME」を宣言する必要があります

この列について関数に知らせるにはどうすればよいですか?

4

4 に答える 4

2

この行で:

fistname := TRIM(fname);

variable を参照していますがfname、それは宣言されていません。

fname私の推測では、プロシージャに渡されたレコードの列を実際に使用したいと考えています。

fistname := TRIM(emp_rec.fname);
于 2013-05-13T12:57:12.320 に答える
0

宣言fistname VARCHAR (40);し、使用するステートメントを更新しますSET FNAME = firstname

それはあるべきです

SET FNAME = fistname

于 2013-05-13T13:11:22.613 に答える
0

コードを一目見ただけで、エラーは次の行にあるように見えます

fistname := TRIM(fname);

手続きは fname が何であるかを知りません。

于 2013-05-13T12:57:43.147 に答える