问题1:合适.只要是组成一个字符串就可以了
   
问题2:直接用n_str:='';不可以吗?

解决方案 »

  1.   

    因一行语句太长,所以分几行来写
    还有因后面语句还要拼凑动态sql,所以n_str变量要复用,用‘/0’方式清空变量是否合适?
      

  2.   

    函数内部变量,每次调用时应该是空的.如果你没把握,可以在定义时置空.
    ....
    is
       n_str  varchar2(200) := null;
    begin
    ....
      

  3.   

    begin  
        n_str:='';
         n_str:='creat global temporary table zw_regcntsubscrb as ';
         n_str:='select subscrb_id,acct,pay_phone from yy_subscrb';
      execute immediate n_str;
       end;
    直接插入不是好点么?
      

  4.   

    v_id integer;
    begin
      v_sql := '';
      v_sql := 'select id from table ';
      execute immediate v_sql into v_id;
    end;
      

  5.   

    问题1:没问题,这个类型最合适
    问题2:清空n_str直接负''就行了  n_str=''