存储过程 做一个简单的查询
例如 select * from emp;
我现在想用存储过程实现,请问一定要定义那么多变量然后select ...into ...吗?
还有即使得到想要的查询也无法显示列明 该怎么处理?求指教,菜鸟级的别鄙视哈!

解决方案 »

  1.   

    CREATE PROCEDURE [dbo].[getAccountOfLogin]
      -- 存储过程要求:
      -- 根据登入者的账号和密码查询出对应的交易账号的资料
      -- Add the parameters for the stored procedure here
        @LoginId VARCHAR(20) ,
        @LoginPW VARCHAR(32)
    AS 
        BEGIN
            SELECT  a.*
            FROM    dbo.Account a ,
                    dbo.AccountLogin b ,
                    dbo.Login c
            WHERE   a.AccountCode = b.AccountCode
                    AND a.SystemType = b.SystemType
                    AND b.LoginId = c.LoginId
                    AND c.LoginId = @LoginId
                    AND pwdcompare(@LoginPW, c.LoginPW) = 1
           --AND c.LoginPW = @LoginPW
        END 
    T-sql的存储过程 我改成plsql
    CREATE OR REPLACE PROCEDURE getAccountOfLogin
    (
    V_LoginId VARCHAR2,
    V_LoginPW VARCHAR2
    )
    IS
    begin
     declare
      v_id account.ACCOUNTID%TYPE;
      v_type account.SYSTEMTYPE%TYPE;
      v_code account.ACCOUNTCODE%TYPE;
      v_pw account.ACCOUNTPW%TYPE;
      v_role account.ACCOUNTROLE%TYPE;
      v_status account.STATUS%TYPE;
      v_update account.UPDATEDT%TYPE;
    cursor cur is
    select a.*
    from account a, accountlogin b,login c
    where a.accountcode=b.accountcode
    and a.systemtype=b.systemtype
    and b.loginid=c.loginid
    and c.loginid=V_LoginId
    and c.loginpw=V_LoginPW ;
    BEGIN
    open cur;
    loop
      fetch cur into v_id,v_type,v_code,v_pw,v_role,v_status,v_update;
      EXIT WHEN cur%NOTFOUND;
    dbms_output.put_line(v_id||v_type||v_code||v_pw||v_role||v_status||v_update);
    end loop;
    close cur;
    end;
    end;
    这样有问题吗?
      

  2.   

    根本不需要用游标,可以直接用动态sql
    如下:
    create or replace procedure test_dual
    as
    sql1 varchar2(2000);
    begin
      sql1:='select '1' from dual  ' ;--1
      execute immediate sql1;
     
    commit;
    end ;
      

  3.   

    你要看结果可以用  dbms_output.put_line()的方式进行数据输出