我想写个sql,用到地址符&,给sql传入参数,比如:
select * from tmp@&lnka ; (直接这么写,会把lnka当成变量)
&lnk 是变量名,跟a连在一起,比如输入1,效果就是:
select * from tmp@1a ;
该怎么写?

解决方案 »

  1.   

    使用动态SQL,执行之前拼接成具体的表名或dblink 名称;
      

  2.   

    SQL> declare v_sql varchar2(2000);
      2  begin
      3  v_sql:='select * from tmp@'||&lnk||'a';
      4  dbms_output.put_line('v_sql='||v_sql);
      5  end;
      6  /
    输入 lnk 的值:  1
    原值    3: v_sql:='select * from tmp@'||&lnk||'a';
    新值    3: v_sql:='select * from tmp@'||1||'a';
    v_sql=select * from tmp@1a