の個人情報を更新するストアドプロシージャを作成します。私はEMPLOYEE表に従業員の個人情報を更新するストアドプロシージャを作成するために次のことを行っている従業員
CREATE OR REPLACE PROCEDURE UPDATE_EMPLOYEE
(
THE_EMPLOYEEID IN NUMBER,
NEW_LASTNAME IN VARCHAR2,
NEW_FIRSTNAME IN VARCHAR2,
NEW_TITLE IN VARCHAR2,
NEW_REPORTSTO IN NUMBER,
NEW_BIRTHDATE IN DATE,
NEW_HIREDATE IN DATE,
NEW_ADDRESS IN VARCHAR2,
NEW_CITY IN VARCHAR2,
NEW_STATE IN VARCHAR2,
NEW_COUNTRY VARCHAR2,
NEW_POSTALCODE VARCHAR2,
NEW_PHONE VARCHAR2,
NEW_FAX VARCHAR2,
NEW_EMAIL VARCHAR2
)
AS
BEGIN
UPDATE EMPLOYEE
SET LASTNAME =
CASE NEW_LASTNAME
WHEN NULL THEN
LASTNAME
ELSE NEW_LASTNAME
END,
FIRSTNAME =
CASE NEW_FIRSTNAME
WHEN NULL THEN
FIRSTNAME
ELSE NEW_FIRSTNAME
END,
TITLE = NEW_TITLE,
REPORTSTO = NEW_REPORTSTO,
BIRTHDATE = NEW_BIRTHDATE,
HIREDATE = NEW_HIREDATE,
ADDRESS = NEW_ADDRESS,
CITY = NEW_CITY,
STATE = NEW_STATE,
COUNTRY = NEW_COUNTRY,
POSTALCODE = NEW_POSTALCODE,
PHONE = NEW_PHONE,
FAX = NEW_FAX,
EMAIL = NEW_EMAIL
WHERE EMPLOYEEID = THE_EMPLOYEEID;
END UPDATE_EMPLOYEE;
EMPLOYEEID、LASTNAME、およびFIRSTNAMEはEMPLOYEE表でNULL可能ではありません。
私はこのメッセージが表示されます。
Connecting to the database ChinookDB.
ORA-01407: cannot update ("CHINOOK"."EMPLOYEE"."LASTNAME") to NULL
ORA-06512: at "CHINOOK.UPDATE_EMPLOYEE", line 21
ORA-06512: at line 34
Process exited.
Disconnecting from the database ChinookDB.
誰かが私が間違ってやっているものにお知らせくださいことはできますか?
この手順をどのように呼び出すのかを知るのに役立ちます。たとえば、別のデータベースに接続しているようです。そのデータベース内のCHINOOKスキーマ内に同じ名前のプロシージャがある場合、それをどのように呼び出しているかに応じて、 "ローカル"バージョンを使用している可能性があります。可能な答えが多すぎる - プロシージャをどのように使用しているかを知ることは、可能性を絞り込むのに役立ちます。 – mathguy