我是新手,看到这么引号头晕呀、、 v_sql:='select so_nbr, busi_code,so_org_id,so_date from '|| tb_name || ' where so_date >to_date('''||max_tm||''',''yyyy-mm-dd hh24:mi:ss'') and so_date <=to_date(to_char(sysdate,''yyyy-mm-dd hh24:mi:ss''),''yyyy-mm-dd hh24:mi:ss'') order by so_date';--
'''':左右各去掉一个单引号相当于'
所以最终效果相当于S.IS_BARGE_FLAG = '字段值'
向这里面的''''是代表什么? '''又是代表什么 ’呢?
具体的字符串
最好还是打印一下输出
dbms_output.put_line(V_WHERESTR);
我是新手,看到这么引号头晕呀、、
v_sql:='select so_nbr, busi_code,so_org_id,so_date from '||
tb_name || ' where so_date >to_date('''||max_tm||''',''yyyy-mm-dd hh24:mi:ss'') and so_date <=to_date(to_char(sysdate,''yyyy-mm-dd hh24:mi:ss''),''yyyy-mm-dd hh24:mi:ss'') order by so_date';--
等效于
V_WHERESTR :=V_WHERESTR || 'S.IS_BARGE_FLAG = ' || V_FIELDVALUE;''''这样写就是冗余,多引了一遍而已
中间连续两个 '' 代表一个 ' 的字符串
例如 str varchar2(10) := ''''; 实际 str 这个字符串的值就是一个单引号str = 'where a = ''' || other_str || '''';同样的,第一部分 'where a = '''
最外层两个' 表示这一部分字符串的起始位置
两个连续的 '' 表示一个单引号,也就是说第一部分的字符串实际为 where a = '
|| other_str 表示连接一个 other_str 的字符串变量,假设 other_str := 'test'
那么前两部分的字符串连起来就是where a = 'test
最后 || '''',上面说了,这代表一个单引号,所以最终连接起来就是where a = 'test'总之,把握两点
最外层表示字符串开始和截止,中间连续 '' 则转义为一个单引号
'''' == '
'S.IS_BARGE_FLAG = ''' 相当于 S.IS_BARGE_FLAG = '