这个我也遇到公平,我当时把语句赋值给了一个字符串,大概是这样的
v_sql varchar(100)
v_sql:='select * from  select * from CHEMICALLIST where id='+RID;
然后再执行就可以了。(执行那个exec...忘了怎么写了,呵呵)

解决方案 »

  1.   

    select语句没法在proc里跑
    你要显示直接在query里跑好了
    要使用或者要返回值就用cursor 或者 select into
      

  2.   

    CREATE OR REPLACE PROCEDURE DT_SELECT_CHEMICALLIST (Rid IN NUMBER) IS
    BEGIN
      select * from CHEMICALLIST where id=Rid;
    END DT_SELECT_CHEMICALLIST;
    不知道楼主这么做要达到什么目的?
    在过程中要写成
    类似于:
    str number;
    execute immediate 'select xxx from CHEMICALLIST where id='||RID into str;
    的形式 就可以了!
      

  3.   

    你是想從存儲過程返回結果集嘛?
    你的寫法在SQLSERVER中是可以的,但在Oracle中你只能返回一個引用的游標
    具體寫法:
    先建一個包
    create or replace package packname is 
    begin
       type dataset is ref cursor
    end packname; 
    再建存儲過程
    CREATE OR REPLACE PROCEDURE DT_SELECT_CHEMICALLIST (Rid IN NUMBER,dataset out packname.dataset) IS
    BEGIN
      open dataset for select * from CHEMICALLIST where id=Rid;
    END DT_SELECT_CHEMICALLIST;
      

  4.   

    你是想從存儲過程返回結果集嘛?
    你的寫法在SQLSERVER中是可以的,但在Oracle中你只能返回一個引用的游標
    具體寫法:
    先建一個包
    create or replace package packname is 
    begin
       type dataset is ref cursor
    end packname; 
    再建存儲過程
    CREATE OR REPLACE PROCEDURE DT_SELECT_CHEMICALLIST (Rid IN NUMBER,dataset out packname.dataset) IS
    BEGIN
      open dataset for select * from CHEMICALLIST where id=Rid;
    END DT_SELECT_CHEMICALLIST;————————————————————————
    然后我再调用存储过程就可以了是吗?
      

  5.   

    create or replace package packname is 
    begin
       type dataset is ref cursor
    end packname; 
    建游标还报错啊警告: 创建的过程带有编译错误。