一个后台验证的功能,存储过程参数为用户名和密码,返回该记录的三个值
 我是这样写的,但是出错了,我不知道是哪里不对
高手帮我看看吧,谢谢啦!
另外我还想问一下,存储过程查询记录集该怎么写呢,求实际的例子参考一下。
create or replace procedure PRO_T_AdminTable_Login
(
loginname in t_Admintable.At_Username%type,
loginpwd in t_Admintable.At_Password%type,
id out number,
name out varchar,
level out varchar
)
is
begin
select AT_ID,AT_Name,AT_Level into id,name,level form T_AdminTable where T_UserName=loginname and T_PassWord=loginpwd;
end PRO_T_AdminTable_Login;

解决方案 »

  1.   

    最好加上异常
    exception when no_data_found then
        raise_application_error(-20000,'该用户不存在');
      

  2.   

    create or replace procedure PRO_T_AdminTable_Login
    (
    loginname in t_Admintable.At_Username%type,
    loginpwd in t_Admintable.At_Password%type,
    id out number,
    name out varchar,
    level out varchar
    )
    is
    begin
    select AT_ID,AT_Name,AT_Level into id,name,level form T_AdminTable where T_UserName=loginname and T_PassWord=loginpwd;
    end PRO_T_AdminTable_Login;
      

  3.   

    form-->from 
      

  4.   

    如果要返回数据集
    --方法1,使用预定义SYS_REFCURSOR
    CREATE OR REPLACE PROCEDURE p_set1(o OUT SYS_REFCURSOR) IS
    BEGIN
      OPEN o FOR
        SELECT * FROM emp;
    END p_set1;
    /--方法2:使用自定义游标类型
    CREATE OR REPLACE PACKAGE pk_type IS
      TYPE curtype IS REF CURSOR;
    END;
    /
    CREATE OR REPLACE PROCEDURE p_set2(o OUT pk_type.curtype) IS
    BEGIN
      OPEN o FOR SELECT * FROM emp;
    END p_set2;
    /