CREATE OR REPLACE PROCEDURE login_p (
username IN VARCHAR2,
userpwd IN VARCHAR2,
userid OUT NUMBER
)
AS
num NUMBER;
BEGIN
SELECT userid
INTO num
FROM right_user
WHERE username = '|| username ||' AND userpwd = '|| userpwd ||'; IF num IS NOT NULL
THEN
userid := num;
END IF;
END;测试:
declare
username varchar2(255);
userpwd varchar2(255);
userid number;
begin
username := 'admin';
userpwd :='96E79218965EB72C92A549DD5A330112';
exec login_p(username,userpwd,userid);
dbms_output.put_line(userid);
end;
总是提示:ORA-06550: 第 8 行, 第 7 列:
PLS-00103: 出现符号 "LOGIN_P"在需要下列之一时:
:= . ( @ % ;
符号 ":=" 被替换为 "LOGIN_P" 后继续。
username IN VARCHAR2,
userpwd IN VARCHAR2,
userid OUT NUMBER
)
AS
num NUMBER;
BEGIN
SELECT userid
INTO num
FROM right_user
WHERE username = '|| username ||' AND userpwd = '|| userpwd ||'; IF num IS NOT NULL
THEN
userid := num;
END IF;
END;测试:
declare
username varchar2(255);
userpwd varchar2(255);
userid number;
begin
username := 'admin';
userpwd :='96E79218965EB72C92A549DD5A330112';
exec login_p(username,userpwd,userid);
dbms_output.put_line(userid);
end;
总是提示:ORA-06550: 第 8 行, 第 7 列:
PLS-00103: 出现符号 "LOGIN_P"在需要下列之一时:
:= . ( @ % ;
符号 ":=" 被替换为 "LOGIN_P" 后继续。
SELECT userid
INTO num
FROM right_user
WHERE username = '|| username ||' AND userpwd = '|| userpwd ||';
userid := num;EXCEPTION
WHEN NO_DATA_FOUND then
userid:=0;
WHEN others then
userid:=0;
END;
CREATE OR REPLACE PROCEDURE login_p (
username IN VARCHAR2,
userpwd IN VARCHAR2,
userid OUT NUMBER
)
AS
num NUMBER;
sqlstr varchar2(4000);
BEGIN
sqlstr:='SELECT userid
FROM right_user
WHERE username = '''|| username ||''' AND userpwd = '''|| userpwd ||'''';
execute immediate sqlstr into num;
IF num IS NOT NULL
THEN
userid := num;
END IF;
END;
username IN VARCHAR2,
userpwd IN VARCHAR2,
userid OUT NUMBER
)
AS
num NUMBER;
BEGIN
execute immediate 'SELECT userid FROM right_user WHERE username = '''|| username ||''' AND userpwd = '''|| userpwd ||'''' INTO num;
IF num IS NOT NULL THEN
userid := num;
END IF;
END;declare
username varchar2(255);
userpwd varchar2(255);
userid number;
begin
username := 'admin';
userpwd :='96E79218965EB72C92A549DD5A330112';
login_p(username,userpwd,userid);
dbms_output.put_line(userid);
end;--or 过程代码这样CREATE OR REPLACE PROCEDURE login_p (
username IN VARCHAR2,
userpwd IN VARCHAR2,
userid OUT NUMBER
)
AS
num NUMBER;
BEGIN
SELECT userid
INTO num
FROM right_user
WHERE username =username AND userpwd =userpwd; IF num IS NOT NULL
THEN
userid := num;
END IF;
END;
CREATE OR REPLACE PROCEDURE login_p (
username IN VARCHAR2,
userpwd IN VARCHAR2,
userid OUT NUMBER
)
AS
num NUMBER;
sqlstr varchar2(4000);
BEGIN
sqlstr:='SELECT userid
FROM right_user
WHERE username = '''|| username ||''' AND userpwd = '''|| userpwd ||'''';
execute immediate sqlstr into num;
IF num IS NOT NULL
THEN
userid := num;
END IF;
END;调用:
set serveroutput on
DECLARE
iusername varchar2(255);
iuserpwd varchar2(255);
iuserid number;
BEGIN
iusername:='admin';
iuserpwd:='123456';
exec rightuser_p (iusername, iuserpwd, iuserid);
dbms_output.put_line('userid:' ||iuserid);
COMMIT;
END;
还是出现
ORA-06550: 第 8 行, 第 9 列:
PLS-00103: 出现符号 "RIGHTUSER_P"在需要下列之一时:
:= . ( @ % ;
符号 ":=" 被替换为 "RIGHTUSER_P" 后继续
有啥米工具可以单步的调试的啊
你看我的没 老大 都写的很明白了DECLARE
iusername varchar2(255);
iuserpwd varchar2(255);
iuserid number;
BEGIN
iusername:='admin';
iuserpwd:='123456';
rightuser_p (iusername, iuserpwd, iuserid); ---这里仔细看
dbms_output.put_line('userid:' ||iuserid);
COMMIT;
END;
1。不能加exec
2.字段变量与自定义的变量不能重复TOAD用起来真不方便