我正在嘗試在 Oracle 中創建一個程序。我希望能夠使用變數輸入呼叫該程序并讀取陳述句。我正在學習 Oracle SQL,所以我不確定我哪里出錯了。
這是我的代碼:
create or replace procedure gradeCheck(grade char(1))
Begin
Case
When grade = 'A' then DBMS_OUTPUT.PUT_LINE('Great Work')
else DBMS_OUTPUT.PUT_LINE('Not great work')
end case;
end gradeCheck;
/
Begin
gradeCheck(A);
end;
/
我希望輸入為“A”(成績分配)并獲得文本輸出。我收到一條訊息,指出GRADECHECK正在編譯該程序。但它不會讓我用輸入呼叫它。
uj5u.com熱心網友回復:
- 你想用
IF不CASE - 您
IS之前缺少關鍵字BEGIN - 你需要終止陳述句
; - 該
CHAR資料型別沒有在簽名的長度。
像這樣:
create procedure gradeCheck(
grade CHAR
)
IS
BEGIN
IF grade = 'A' THEN
DBMS_OUTPUT.PUT_LINE('Great Work');
ELSE
DBMS_OUTPUT.PUT_LINE('Not great work');
END IF;
END gradeCheck;
/
然后你需要在字串周圍使用引號:
Begin
gradeCheck('A');
end;
/
db<>在這里擺弄
uj5u.com熱心網友回復:
您的問題
- 你
is在create or replace宣告中遺漏了一個詞 - 如果輸入變數是字串 ( char ),則在呼叫程序時必須將值括在引號中。
- 使用
varchar2代替char,盡管它不是強制性的。 ;必須在最后dbms_output- 如果您使用
sqlplus,運行它,使用set serveroutput on啟用輸出,您可以看到訊息。
然后
create or replace procedure gradeCheck(grade in varchar2)
is
Begin
case when grade = 'A'
then
DBMS_OUTPUT.PUT_LINE('Great Work');
else
DBMS_OUTPUT.PUT_LINE('Not great work');
end case;
end gradeCheck;
/
set serveroutput on
Begin
gradeCheck('A');
end;
/
測驗用例
SQL> l
1 create or replace procedure gradeCheck(grade in varchar2)
2 is
3 Begin
4 case
5 when grade = 'A' then
6 DBMS_OUTPUT.PUT_LINE('Great Work');
7 else
8 DBMS_OUTPUT.PUT_LINE('Not great work');
9 end case;
10* end gradeCheck;
SQL> /
Procedure created.
SQL> begin
2 gradeCheck('A');
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> set serveroutput on
SQL> r
1 begin
2 gradeCheck('A');
3* end;
Great Work
PL/SQL procedure successfully completed.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/330501.html
