想学一下怎么创建存储过程,下面写的总是编译有错,麻烦大家指点一下哪错了。CREATE OR REPLACE PROCEDURE GetUserInfo
@userId VARCHAR2(16),
@userName VARCHAR2(40) OUTPUT
AS
BEGIN
 SELECT u.username FROM users u WHERE u.userid = @userId
 SET  @userName = u.username
END
GO

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE GetUserInfo(v_userid   varchar2,
                                            v_username out varchar2) AS
    BEGIN
      SELECT u.username into v_username FROM users u WHERE u.userid = v_userid;
    END
    /
      

  2.   

    LZ的写法是sqlserver里的语法吧
      

  3.   

    我想用userName接收查询出来的参数传出去,怎么传?
      

  4.   


    CREATE OR REPLACE PROCEDURE GetUserInfo(v_userid   in varchar2,
                                            v_username out varchar2) iS
    BEGIN
      SELECT u.username into v_username FROM users u WHERE u.userid = v_userid;
    END;
      

  5.   

    恩,我原来写过sqlserver的存储过程,现在用oracle数据库,不知道怎么写。
      

  6.   

    CREATE OR REPLACE PROCEDURE GetUserInfo (userId in varchar2 , userName out varchar2) is
       name varchar2(40);BEGIN
     SELECT u.username into name FROM users u WHERE u.userid = userId;
      userName := name;
     return userName;
    END;
    呵呵这些都是基本的东西,你要去多看看oracle基础你的那种写法有点像SQL的
      

  7.   

    要传出去最好写function,不要写procedure
      

  8.   

    我按这个写了还是有错。
    PLS-00103: 出现符号 "end-of-file"在需要下列之一时:;符号 ";" 被替换为 "end-of-file" 后继续。