比如
declare abc varchar(20):='123';
select abc as 列名,其他列 from 表
执行的时候会报错?应该如何的写?
因为我要用这个查出来的东西作为子表的所以不能用动太的sql来拼sql,不知道还有没有其他方法

解决方案 »

  1.   

    这种你就直接这样写
    select '123' as xxx ,其他列 from tb;
      

  2.   

    declare dnamet varchar(20):='ACCOUNTING';
     loc varchar(20):='ACCOUNTING';
    begin
        
         dbms_output.put_line('dnamet:'||dnamet);
         select DEPTNO into loc  from dept where dname=dnamet;
         dbms_output.put_line('loc:'||loc);
    end;
    /
      

  3.   

    在scott用户下有dept表,里面有数据,可以run成功的。
      

  4.   


    用plsql脚本块应该可以搞定的。
      

  5.   


    我要写在存储过程里,如果写成select abc AS 列名 from 表 报错的
      

  6.   

    我写的就存储过程的plsql脚本块啊,你的定义declare必须放在begin关键字前面,不然会报错的。而且select into之后还需要end来结尾啊。
      

  7.   

    你既然打算用plsql变量了,就不怕用begin ... end 了吧!
      

  8.   

    create or replace procedure test
    as
      t_test varchar2(25);
      t_model_name varchar2(30);
      t_t_test varchar2(100);
      sqlstr varchar2(100);begin
        t_test:='123456';
        sqlstr:='select MODEL_NAME,'||t_test||' as test from EQHAdmin.T_CO_MODEL_DESC where rownum=1';
        execute immediate sqlstr into t_model_name,t_t_test;
        dbms_output.put_line('结果为:'|| t_model_name||t_t_test);
        commit;
        exception
         when others then
          rollback;
          raise;   
    end;用execute 或许能帮上一些忙,可能还要用到临时表及游标!