up
type ref_cursor is ref cursor;
pcs ref_cursor;
在过程中用游标必需这样定义么?/?

解决方案 »

  1.   

    select 用户名 from 用户信息 where 用户名=p_用户名 and 密码=p_密码;
    这句话单独列出来有没有数据?
      

  2.   

    是像SQL SERVER,因为我初学Oracle的原因,
    select 用户名 from 用户信息 where 用户名=p_用户名 and 密码=p_密码;
    这句代入参数就能找出数据如:
    select 用户名 from 用户信息 where 用户名='1' and 密码='1';
    Oracle存储过程中的Select语句不是一定要用到游标吗?
    所以我
    type ref_cursor is ref cursor;
    pcs ref_cursor;
    定义了,不对吗?请帮忙解决!
      

  3.   

    (
     p_用户名 in 用户信息.用户名%TYPE,
     p_密码 in 用户信息.密码%TYPE
    )
    as
    type ref_cursor is ref cursor;
    pcs ref_cursor;
    begin
     open pcs for 'select 用户名 from 用户信息 where 用户名='||p_用户名||' and 密码='||p_密码;
    end;
      

  4.   

    beckhambobo(beckham)  is right!!
    在ORACLE中,字符類型的數據在操作時必須用兩個單引號括起來!
    例如:
    SELECT * FROM USER_INFORMATION
    WHERE USER_NAME='JOHN';
      

  5.   

    请问是想返回数据吗?那你应该将游标定义在参数中,作为输出参数就可以了。直接在存储过程中用select语句返回的做法是T-SQL的方法,ORACLE不支持。
      

  6.   

    这是Oracle的非限定性游标的用法,不过应该把游标定义在PACKAGE里:
    CREATE OR REPLACE PACKAGE spm
    IS TYPE rctl IS REF CURSOR
    RETURN tt%ROWTYPE
    PROCEDURE proc1(rc1 IN OUT rctl);END;`
    (
     p_用户名 in 用户信息.用户名%TYPE,
     p_密码 in 用户信息.密码%TYPE,
     
    )
      

  7.   

    我已经知道了,是要定义一个程序包,在程序包中定义一个游标!在用到SELECT查询时,只要引用该游标,及定义为OUT就OK了!