1.ORACLE SQL 字符串引用变量,单引号,日期型处理

方法:

字符:||   使用时为字符串连接

ls_stop  varchar(20);
strsql varchar(1000);

strsql:=’select * from all_tables where  table_name= ‘’’||ls_stop||’’’  ’;

----其中在字符串中写    ‘’’||字符串||’’’ 是字符串引用变量

2.ORACLE SQL 字符串引用单引号

方法:

oracle 字符串中单引号 2个单引号表示一个单引号 

--- select '''' from dual;
---select TO_TIMESTAMP(ldt_start,'yyyy-mm-dd HH24:MI:SS.FF') from dual;

3.ORACLE SQL 字符串引用日期型处理

本人是字符转换为日期型使用的,如有其他方法敬请指点

strsql :='TO_TIMESTAMP('''||ls_start||''',''yyyy-mm-dd HH24:MI:SS.FF'') ';

 

综合举例:

一下因为putline限制255个字符,所以每255个字符输出字符串

declare
    ls_storage varchar(4);
    ls_form varchar(3);
    ls_start varchar(20);
    ls_stop  varchar(20);
    strsql varchar(1000);
begin
    ls_storage:='3502';
    ls_form:='all';
    ls_start:='2012-03-23 19:00:00';
    ls_stop:='2012-4-25 22:00:00';
    strsql:='';   
    DBMS_OUTPUT.ENABLE (buffer_size=>null) ;

    strsql := 'SELECT exp_code,exp_spec,units,batch_no,sum(quantity) import_quantity,purchase_price,'||               
              'sum(quantity*purchase_price) import_amount,0 export_quantity,0 export_price,'||
              '0 export_amount,firm_id,exp_form FROM exp_import_detail,exp_import_master '||
              'WHERE exp_import_detail.document_no = exp_import_master.document_no AND '||
              'exp_import_master.account_indicator = 1 AND exp_import_master.storage='||
              ''''||ls_storage||''' and (exp_import_detail.exp_form= '''||ls_form|| ''' '||
              'or '''||ls_form||'''= ''all'') AND exp_import_master.import_date >'||
          'TO_TIMESTAMP('''||ls_start||''',''yyyy-mm-dd HH24:MI:SS.FF'') '||
          'AND exp_import_master.import_date >'||
          'TO_TIMESTAMP('''||ls_stop||''',''yyyy-mm-dd HH24:MI:SS.FF'') '||
          'AND exp_import_master.import_date <='||
          'TO_TIMESTAMP('''||ls_stop||''',''yyyy-mm-dd HH24:MI:SS.FF'') '||
          'GROUP BY  exp_code,exp_spec,units,batch_no,purchase_price,firm_id,exp_form' ;             

DBMS_OUTPUT.PUT_LINE(substr(strsql,1,255));
DBMS_OUTPUT.PUT_LINE(substr(strsql,256,255));
DBMS_OUTPUT.PUT_LINE(substr(strsql,512,255));
DBMS_OUTPUT.PUT_LINE(substr(strsql,766,255));
end;
/

结果:

SELECT exp_code,exp_spec,units,batch_no,sum(quantity) import_quantity,purchase_price,sum(quantity*purchase_price) import_amount,0 export_quantity,0 export_price,0 export_amount,firm_id,exp_form FROM exp_import_detail,exp_import_master WHERE exp_import_det
ail.document_no = exp_import_master.document_no AND exp_import_master.account_indicator = 1 AND exp_import_master.storage='3502' and (exp_import_detail.exp_form= 'all' or 'all'= 'all') AND exp_import_master.import_date >TO_TIMESTAMP('2012-03-23 19:00:00',
'yyyy-mm-dd HH24:MI:SS.FF') AND exp_import_master.import_date >TO_TIMESTAMP('2012-4-25 22:00:00','yyyy-mm-dd HH24:MI:SS.FF') AND exp_import_master.import_date <=TO_TIMESTAMP('2012-4-25 22:00:00','yyyy-mm-dd HH24:MI:SS.FF') GROUP BY  exp_code,exp_spec,unit
ts,batch_no,purchase_price,firm_id,exp_form