Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
plsql中的转义_Sql_Oracle_Plsql_Escaping - Fatal编程技术网

plsql中的转义

plsql中的转义,sql,oracle,plsql,escaping,Sql,Oracle,Plsql,Escaping,嗨,我正试图提出这个问题 update txnblackout set enddate= ''TO_DATE('25/02/2012','dd/mm/yyyy')'' where idsequence='1' 但是,这是不工作的错误 ORA-00933: SQL command not properly ended 你能证明一下吗。为什么会这样 这是我用来创建查询的java代码:- Map<String, String> l_script_columns = new Ha

嗨,我正试图提出这个问题

update txnblackout
  set enddate= ''TO_DATE('25/02/2012','dd/mm/yyyy')''
  where idsequence='1'
但是,这是不工作的错误

ORA-00933: SQL command not properly ended
你能证明一下吗。为什么会这样

这是我用来创建查询的java代码:-

Map<String, String> l_script_columns = new HashMap<String, String>();
        l_script_columns.put("startdate", "'TO_DATE('"
            + txtStartDate.getText().trim() + "','"
            + FieldMapperHelper.DATE_Format + "')'");
Map l_script_columns=new HashMap();
l_script_columns.put(“startdate”),“TO_DATE(”
+txtStartDate.getText().trim()+“,”
+FieldMapperHelper.DATE_格式+“)”;

如果您需要更多说明,请告诉我。谢谢。

您为什么要逃跑

with txnblackout as 
       (select trunc(sysdate + level) enddate /* trunc drops time component */ , level idsequence
          from dual
       connect by level <= 10 /* this will generate 10 rows with an incrementing 'level' value */ )
select enddate
     , idsequence
  from txnblackout
 where enddate = to_date('20/10/2012','dd/mm/yyyy')
;
(注意,假设idsequence是一个数字)


最后,如果要将非参数化的动态sql查询传递到Oracle,则需要将其显示为:

"update txnblackout   
    set enddate= TO_DATE(''25/02/2012'',''dd/mm/yyyy'')  
  where idsequence=1;"
(请注意,我仍然假设idsequence是数字类型,而不是varchar)

尽管如此,还是要注意安全

如果将其参数化,您也不必担心转义


你为什么要逃跑

with txnblackout as 
       (select trunc(sysdate + level) enddate /* trunc drops time component */ , level idsequence
          from dual
       connect by level <= 10 /* this will generate 10 rows with an incrementing 'level' value */ )
select enddate
     , idsequence
  from txnblackout
 where enddate = to_date('20/10/2012','dd/mm/yyyy')
;
(注意,假设idsequence是一个数字)


最后,如果要将非参数化的动态sql查询传递到Oracle,则需要将其显示为:

"update txnblackout   
    set enddate= TO_DATE(''25/02/2012'',''dd/mm/yyyy'')  
  where idsequence=1;"
(请注意,我仍然假设idsequence是数字类型,而不是varchar)

尽管如此,还是要注意安全

如果将其参数化,您也不必担心转义


在上面的查询中,您希望保留日期或文本,因此在第一种情况下

    update txnblackout 
        set enddate= TO_DATE('25/02/2012','dd/mm/yyyy')
      where idsequence='1'
id序列是文本还是数字并不重要,在第二种情况下,您希望保留文本:

     update txnblackout 
        set enddate= 'TO_DATE(''25/02/2012'',''dd/mm/yyyy'')'
      where idsequence='1'
我想你想要第一箱,请查收。
向您的上述查询致以最良好的祝愿您希望保留日期或文本,因此在第一种情况下

    update txnblackout 
        set enddate= TO_DATE('25/02/2012','dd/mm/yyyy')
      where idsequence='1'
id序列是文本还是数字并不重要,在第二种情况下,您希望保留文本:

     update txnblackout 
        set enddate= 'TO_DATE(''25/02/2012'',''dd/mm/yyyy'')'
      where idsequence='1'
我想你想要第一箱,请查收。
致以最诚挚的问候在此情况下,您必须尝试以下方法:

Map<String, String> l_script_columns = new HashMap<String, String>();
        l_script_columns.put("startdate", "'||TO_DATE('"
            + txtStartDate.getText().trim() + "','"
            + FieldMapperHelper.DATE_Format + "')||'");

在这种情况下,您必须尝试以下方法:

Map<String, String> l_script_columns = new HashMap<String, String>();
        l_script_columns.put("startdate", "'||TO_DATE('"
            + txtStartDate.getText().trim() + "','"
            + FieldMapperHelper.DATE_Format + "')||'");

试着放“;”在你的命令结束时

您的命令应该如下所示:
更新txnblackout
将enddate=”设置为“日期('25/02/2012','dd/mm/yyyy')”

其中idsequence='1'

试着放“;”在你的命令结束时

您的命令应该如下所示:
更新txnblackout
将enddate=”设置为“日期('25/02/2012','dd/mm/yyyy')”

其中idsequence='1'

我之所以转义日期,是因为我正在用java代码执行查询,并且在那里它会自动将单个代码放在日期(“25/02/2012”,“dd/mm/yyyy”)的前面,所以为了转义日期,我额外加了一个引号。但这不起作用。@Sunil,您应该在这里使用参数化查询。但我不想谈这个。您需要担心的唯一字符串是您已经拥有的字符串,但是“to_date”不应该包含在任何引号中;我将发布一个编辑到这个应该让你在正确的轨道上。但我强烈建议使用参数化查询,而不是使用动态SQL来保证站点的安全。我之所以转义日期,是因为我是通过java代码执行查询的,并且它会自动将单个代码放在日期('25/02/2012','dd/mm/yyyy')之前,所以为了转义,我额外加了一个引号。但这不起作用。@Sunil,您应该在这里使用参数化查询。但我不想谈这个。您需要担心的唯一字符串是您已经拥有的字符串,但是“to_date”不应该包含在任何引号中;我将发布一个编辑到这个应该让你在正确的轨道上。但我强烈建议使用参数化查询,而不是使用动态SQL来保证站点安全。您好,谢谢您的回复。这里的“to_DATE”是一个函数,我使用它将日期保存为特定格式。列enddate的类型是Date,所以我不能使用第二种情况,我通过java代码执行我的查询,java代码显式地在to_Date函数之前放一个代码,所以我放了一个额外的单引号来转义单引号,但这不起作用。这是一个java字符串问题。您好,谢谢您的回复。这里的“to_Date”是一个函数,我正在使用将日期保存为特定格式。列enddate的类型是Date,所以我不能使用第二种情况,我通过java代码执行我的查询,java代码显式地在to_Date函数之前放一个代码,所以我放了一个额外的单引号来转义单引号,但这不起作用。这是一个java字符串问题。表txnblackout中enddate列的数据类型是什么日期?是的。这里是David。我只是想知道为什么更新txnblackout将enddate=''设置为日期('25/02/2012','dd/mm/yyyy'),其中idsequence='1'不起作用,即使我已转义了所有单引号。您还没有转义所有单引号。但即使你有,也会给出一个带引号的字符串,其中包含“TO_DATE”等,而不是你想要的值。我不懂Java,但它肯定有办法将日期值作为绑定变量传递?(顺便说一句,日期文字可以写得更简洁,因为
date'2012-02-25'
)是表txnblackout date中的enddate列的数据类型?是的。这里是David。我只想知道为什么要将txnblackout set enddate=''更新为_date('25/02/2012','dd/mm/yyyy'))“”其中idsequence='1'不起作用,即使我已转义了所有单引号。您尚未转义所有单引号。但即使你有,也会给出一个带引号的字符串,其中包含“TO_DATE”等,而不是你想要的值。我不懂Java,但它肯定有办法将日期值作为绑定变量传递?(顺便说一句,日期文字可以更简洁地写成
date'2012-02-25'
)这不会隐式地将其转换回字符串吗?我想你可能会侥幸逃脱,因为Oracle随后将使用相同的默认日期格式将其转换回日期,但仍然不美观。这不会隐式地将其转换回字符串吗?我想你可能会侥幸逃脱,因为Oracle随后会使用相同的默认日期格式将其转换回日期,但这并不漂亮。