私はPL/SQLを初めて使用するので、これが初心者のような質問であると思われる場合は、マークを付けないでください。私はこれに数時間取り組んできましたが、今は助けを求めています。さらに、このコードは不完全であることに注意してください。私はそれを完了するための助けを求めています。そこで、KEYBOARD_LEARNINGというテストテーブルの簡単なプロシージャを作成しようとしています。以前は、このコードを手動で使用する必要がありました。
INSERT INTO keyboard_learning (emplid, wpm, date_completed,exercise,attempt,score_lvl)
VALUES ('000000000','37.66','04-JUL-2012','Keyhero.com','28','95.87% accuracy')
..新しいスコアをKEYBOARD_LEARNINGに記録したいときはいつでも。これを処理するプロシージャを作成できると思いましたが、このプロシージャを呼び出すときに入力する値は常に変化するため、静的ではない必要があります。私が持っているコードをこの最適な機能で動作させる方法について何か考えはありますか?ちなみに、以下のコードは実行されていません。経験豊富なOracleユーザーは、その理由をすぐに理解できると確信しています。
ありがとうございました
CREATE OR REPLACE PROCEDURE INSERT_WPM_SCORE
(
P_EMPLID VARCHAR2
,P_WPM NUMBER
,P_DATE_COMPLETED SYSDATE
,P_EXERCISE VARCHAR2
,P_ATTEMPT VARCHAR2
,P_SCORE_LVL VARCHAR2
) AS
/*
Original Author:
Created Date: 2-Aug-2012
Purpose: For inputting latest WPM score from typing practice
*/
/*variables*/
L_EMPLID VARCHAR2(4000);
L_WPM NUMBER;
L_DATE_COMPLETED SYSDATE;
L_EXERCISE VARCHAR2(4000);
L_ATTEMPT VARCHAR2(4000);
L_SCORE_LVL VARCHAR2(4000);
L_PREVENT_NULL_INPUT EXCEPTION;
PRAGMA EXCEPTION_INIT(L_PREVENT_NULL_INPUT, -44002); --GET CORRECT ERROR # BY TESTING WITHOUT EXCEPTION
VALUES VARCHAR2(4000); [b]<-- getting an error here[/b]
/*Procedure 'W' is a wrapper for DBMS output*/
PROCEDURE W(STR VARCHAR2) IS
L_STRING VARCHAR2(4000);
BEGIN
/*Outputting string parameter passed into 'W' procedure*/
L_STRING := STR;
DBMS_OUTPUT.PUT_LINE(STR);
END;
BEGIN
VALUES := (L_EMPLID, L_WPM, L_DATE_COMPLETED, L_EXERCISE, L_ATTEMPT,L_SCORE_LVL);
SELECT INTO (SELECT *
FROM KEYBOARD_LEARNING A
ORDER BY A.EXERCISE
,TO_NUMBER(ATTEMPT))
-- DBMS_OUTPUT.PUT_LINE(RESULTS);
EXCEPTION
/* */
WHEN L_PREVENT_NULL_INPUT THEN
NULL;
/*this exception catches all other exceptions*/
WHEN OTHERS THEN
W('ERROR: ' || SQLERRM);
END;