Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串查询中的oracle转义单引号_Oracle_Plsql - Fatal编程技术网

字符串查询中的oracle转义单引号

字符串查询中的oracle转义单引号,oracle,plsql,Oracle,Plsql,如何在plsql块中的字符串查询中转义单个字符。我试着用双引号逃跑,但似乎不起作用。我想从一段时间和之后选择数据,但日期变量是YYMM格式的,我正在相应地将其转换为时间戳或日期时间 这是代码的一个示例: declare datevar varchar2(4); stringquery varchar(1000); begin stringquery := 'select * from mytable where datetimecol > to_timestamp('||datev

如何在plsql块中的字符串查询中转义单个字符。我试着用双引号逃跑,但似乎不起作用。我想从一段时间和之后选择数据,但日期变量是YYMM格式的,我正在相应地将其转换为时间戳或日期时间

这是代码的一个示例:

declare
datevar     varchar2(4);
stringquery varchar(1000);
begin
stringquery := 'select * from mytable where datetimecol > to_timestamp('||datevar||',''YYMM'')';

For i in stringquery Loop
  do sth

两个单引号被解释为字符串中的一个引号,因此您的语句相对正确。也许您还需要在“datevar”周围加引号:

您可以轻松测试这一点:

select 'select * from mytable where datetimecol > to_timestamp('''||datevar||''',''YYMM'')'
from (select 'x' as datevar from dual) t

如果您使用的是游标变量,而不是在查询中嵌入字符串值,那么您可能需要考虑使用绑定变量。你对Gordon答案的评论表明你在尝试各种事情,并得到各种错误,但你需要显示哪些错误与哪些代码尝试相关-混合和匹配,并且含糊不清,不要帮助…有趣的是,我使用dbms_输出检查plsql中的参数,它向我打印值1001,例如,这是正确的(这将被解释为datetime)。在plsql developer中,当我从datetimecol>中选择*到_timestamp('1001','YYMM')时,它正在工作,但在plsql块stringquery中使用它时:='select*从mytable where datetimecol>到_timestamp('124; | datevar | |,'YYMM');它不工作,无论是预期得到的数字或plsql numeri值错误的问题etc@GeorgeGeorgiou . . . 在注释中的示例中,需要在
datevar
周围加引号。我尝试用1个单引号、2个单引号、3个单引号和“| | datevar双引号,但似乎没有任何效果。有解决办法吗?@georgeorgiou。打印出
stringquery
,然后尝试运行每一个。您应该很快让其中一个版本开始工作。
select 'select * from mytable where datetimecol > to_timestamp('''||datevar||''',''YYMM'')'
from (select 'x' as datevar from dual) t