我做了最简单的存储过程,目的是为了实验!!!!!!CREATE OR REPLACE PROCEDURE   dzh
 ASBEGIN
 select   *     YMD_MARQUEE;END dzh
// 可以正常创建,但执行就是不行,不知道为什么?? 是不有可能权限的问题啊???
//我的执行语句是
execute dzh;
请大家说说!

解决方案 »

  1.   

    过程中不能直接使用select语句!select col1,col1 into var1,var2 from table where ...
    或者使用游标!open cur1 as select * from table;
      

  2.   

    select语句要有into操作
    应该更改为
    select col1,……  int var1…… from table_name;
      

  3.   

    你连FROM都没有要是对了就见鬼了
      

  4.   


    CREATE OR REPLACE PROCEDURE dzh()
     AS
     a out  char(10),
     b out  char(20)
    BEGIN
     select   TOPIX_ID  , TITLE  into a ,b   from ta2END dzh//执行
    execute dzh;
     
     问题依旧.......谢谢你们了
      

  5.   


    CREATE OR REPLACE PROCEDURE dzh
        (
        a out  varchar2,
        b out  varchar2
        )
    ASBEGIN
      select TOPIX_ID,TITLE
        into a ,b
        from ta2 
       Where rownum <= 1;
    END dzh;
    楼主居然连分号都不加……
    再有,你Select出的数据如果不能确保是一条数据的话,直接Into到变量里会出错的。
      

  6.   

    select   *     YMD_MARQUEE;  
    What is this??????
    你先测试你存储过程里面的SQL语句能不能运行再说别的!
      

  7.   

    CREATE OR REPLACE PROCEDURE dzh
        (
        a out  varchar2,
        b out  varchar2
        )
    ASBEGIN
      select TOPIX_ID,TITLE
        into a ,b
        from YMD_TOPIX
       Where rownum <= 1;
    END dzh;//
    execute dzh;现在改成这样了,麻烦大家看看!!!!!!!!
      

  8.   

    a in out  varchar2 试试
      

  9.   

    晕了
    CREATE OR REPLACE PROCEDURE dzh
    AS
        YMD_TOPIX.TOPIX_ID%type a;
        YMD_TOPIX.TITLE%type b;
    BEGIN
      select TOPIX_ID,TITLE
        into a ,b
        from YMD_TOPIX
       Where rownum <= 1;
    END dzh;
      

  10.   

    CREATE OR REPLACE PROCEDURE dzh 
    AS 
        a YMD_TOPIX.TOPIX_ID%type; 
        b YMD_TOPIX.TITLE%type; 
    BEGIN 
      select TOPIX_ID,TITLE 
        into a ,b 
        from YMD_TOPIX 
       Where rownum  = 1; 
    END dzh; 
      

  11.   

    execute dzh
    只要有传入或者传出参数时
    调用必须加参数的
    execute dzh(参数1,参数2)
    所以要照楼上的改(假设你不需要返回值)
      

  12.   

    按照17,18楼的改了,没用..............我的因为是查询,没有用到外部变量,所以不需要传参数.......我的执行语句  execute dzh;
      

  13.   

    execute dzh;写在存储过程里是多余的。
    结束以后直接测试就能返回得到a,b的值了。
    如果让他自动执行可以写个主调的批量或者sp能做到的,这个很简单的。
      

  14.   

    给个简单的例子看看吧CREATE OR REPLACE PROCEDURE lizhi
    as
    today CHAR(8);
    begin
    select sysdate into today from dual;
    update test set id='' where id='55';
    insert into test1 values('1','2','3');
    end;