我編寫了一個應該允許輸入用戶名和密碼的過程,如果成功,它應該處理登錄的時間戳。問題在於代碼似乎完全跳過了&用戶名,並轉到下一個用戶定義的條目,即代碼中的&傳遞。這是我的代碼:ECHO是接通,所以SERVEROUTPUT BTW怎麼辦?我的用戶定義的輸入不允許我輸入值
create or replace procedure LOGIN_CK_PF
as
fname bb_shopper.firstname%type;
lname bb_shopper.lastname%type;
uname bb_shopper.username%type;
pass bb_shopper.password%type;
begin
select firstname, lastname, username, password
into fname, lname, uname, pass from bbshop
where username=&username;
if pass = &pass then
dbms_output.put_line(Sysdate);
else
dbms_output.put_line('Invalid Login');
end if;
exception
when no_data_found then
dbms_output.put_line('Invalid Login');
end;
/
這是價值觀的輸入時輸出的代碼是什麼樣子:
Enter value for username:
old 11: select firstname, lastname, username,
password into fname, lname, uname, pass
from bbshop
new 11: select firstname, lastname, username,
password into fname, lname, uname, pass
from bbshop
它看起來像它的將全部選擇語句作爲條目? 誤差的特定線路如下:
11/2 PL/SQL: SQL Statement ignored
11/107 PL/SQL: ORA-00936: missing expression
一般情況下,這並不意味着它正在整個選擇作爲一個條目。它顯示了綁定參數被附加之前和之後的一段代碼。在你的情況下,你的選擇中的密碼列和where子句消失,這很奇怪。並且因爲3列選入4個參數,你會得到這個錯誤。你確定這個輸出是爲你在文章中提供的過程的調用而產生的嗎?也許你做了一些改變? – Guneli
PL/SQL沒有用於接受用戶輸入的設施。你使用SQL * Plus來運行腳本嗎? –
我確實使用sql plus ..但它的奇怪,因爲我已經用其他代碼與用戶輸入相同的程序,這些工作正常。 – Jongu