1.create or replace procedure yinfengan.test123 as
testtemp varchar2(12):='1';
begin
 select * from testyfa where Y1='1';
end;
我建这个过程的时候,老提示有创建的过程带有编译错误。不知道为什么??帮忙看看,谢谢!!!
2.还有一个问题想请教大家,为什么用户名和方案是同一个名字,请问它们有什么联系吗,谢谢各位
大峡的指教,谢谢!!!!!

解决方案 »

  1.   

    1 用SHOW ERROR把错误打出来发给大家看一下吧
    2 用户名和方案有很大的联系,比方说用户定义的数据类型,表,视图,索引都会在一个方案下面,在以此用户登陆时,就不必写全名,而其他用户登陆时要访问这些内容就有必要写全名……
      

  2.   

    返回结果集需要用ref cursor
    否则需要将结果存入变量中
    create or replace procedure yinfengan.test123 as
    testtemp varchar2(12):='1';
    v_num number;
    begin
     select count(*) into v_num from testyfa where Y1='1';
    end;
    /创建用户的时候自动创建了一个schema,名字跟用户名相同。
      

  3.   

    首先谢谢两位兄弟的帮助,只是还是没怎么明白为什么要用ref cursor,在SQL SERVER中好象不要这样,
    另外问一下bzszp(SongZip)先生,ref cursor怎么实现,谢谢了。 acmly先生,错误提示如下:警告: 创建的过程带有编译错误。
      

  4.   

    oracle存储过程如何返回数据集
    你需要写到一个包中:
    create or replace package pag_cs_power as    type c_Type is ref cursor;
      
    FUNCTION FUN_CS_GETDICTLIST(
      v_DictIndex in  varchar2) return c_Type;end pag_cs_power;存储过程代码:FUNCTION FUN_CS_GETDICTLIST(
      v_DictIndex in  varchar2) return c_Type
         as
            c_cursor            c_Type;
    begin
       open c_cursor for
          select DICTID,DICTNAME FROM SYS_DICT WHERE DICTINDEX = v_DictIndex;
       return c_cursor;
    end FUN_CS_GETDICTLIST;
      

  5.   

    ref cursor是要返回一堆数据时候用的一个游标变量引用。
    要返回游标变量则需要在包中先声明之,然后在相应参数中设置为IN OUT类型,或者直接声明为FUNCTION并返回游标变量,例如代码可以如下:
    CREATE OR REPLACE PACKAGE pkg_test 
    AS 
        TYPE refcursor IS REF CURSOR; 
      
       FUNCTION yinfengan.test123() RETURN refcursor;
    END pkg_test; CREATE OR REPLACE PACKAGE body pkg_test as 
    FUNCTION yinfengan.test123() 
    RETURN refcursor  AS
    c_Record       refcursor;BEGIN
         open c_Record for select count(*) into v_num from testyfa where Y1='1';
         return c_Record;
    END yinfengan.test123;
    END pkg_test;我说的不是那个错误,在这种情况下你在SQLPLUS中打入命令SHOW ERROR可以提示更详尽的错误。 
      

  6.   

    谢谢bzszp(SongZip) 先生和acmly() 先生,虽然还是不怎么明白,但是两位兄弟的热情帮忙解决问题,在下是非常感动.
      

  7.   

    acmly() 先生,您说的在SQLPLUS中打入命令SHOW ERROR可以提示更详尽的错误,不知道怎么用,因为我是在worksheet中写的存储过程。
    另外刚才两位兄弟写的包,也就是说,如果要返回select值的结果集,就只能用包写,而不能用过程写,是这个意思吗,不知到我理解的对不对???