oracle execute immediate 单引号嵌套,在execute immediate语句中使用类似'string token'的单引号问题(having issues with sing...

在execute immediate语句中使用类似'string token'的单引号问题(having issues with single quotes using like 'string token' in execute immediate statement)

这是代码的一部分,我使用''blah''来逃避单引号,但我猜它不起作用:

declare

my_func varchar2(20) :='test_func';

begin

execute immediate 'insert into TABLE_TEST (OUTPUT) select ' || my_func || ' from dual where TABLE_TEST.FUNCTION_NAME like ' 'VALIDATION1_%' ' ';

end;

我收到以下错误:

PLS-00103: Encountered the symbol "VALIDATION1_%" when expecting one of the following:

& = - + ; < / > at in is mod remainder not rem return

returning <> or != or ~= >= <= <> and or

like like2 like4 likec between into using || bulk member

submultiset

The symbol "* was inserted before "VALIDATION1_%" to continue.

Here is the section of code, I am using ' ' blah ' ' to escape single quotes but I guess its not working:

declare

my_func varchar2(20) :='test_func';

begin

execute immediate 'insert into TABLE_TEST (OUTPUT) select ' || my_func || ' from dual where TABLE_TEST.FUNCTION_NAME like ' 'VALIDATION1_%' ' ';

end;

I am getting the following error:

PLS-00103: Encountered the symbol "VALIDATION1_%" when expecting one of the following:

& = - + ; < / > at in is mod remainder not rem return

returning <> or != or ~= >= <= <> and or

like like2 like4 likec between into using || bulk member

submultiset

The symbol "* was inserted before "VALIDATION1_%" to continue.

原文:https://stackoverflow.com/questions/27994640

2020-06-30 13:06

满意答案

看起来你试图用另一个单引号(这很好)来逃避单引号 ,但两者之间还有一个额外的空间。 那必须要去。

更改

' from dual where TABLE_TEST.FUNCTION_NAME like ' 'VALIDATION1_%' ' '

' from dual where TABLE_TEST.FUNCTION_NAME like ''VALIDATION1_%'' '

It looks like you are trying to escape the single quote with another single quote (which is good), but there is an extra space in between the two. That has to go.

Change

' from dual where TABLE_TEST.FUNCTION_NAME like ' 'VALIDATION1_%' ' '

to

' from dual where TABLE_TEST.FUNCTION_NAME like ''VALIDATION1_%'' '

2017-05-23

相关问答

双引号用于命名数据库对象(表名,列名,用户名,模式名......),而单引号用于表示要用作值的字符串。 所以你的UndefinedColumn: ERROR是有意义的,因为当用@products.where('name="check123"')过滤时,产生的SQL将是.... where name = "check123" 。 db引擎正在尝试查找名为check123的列,并将其值与列name的值匹配。 由于表中不存在列check123 ,因此会出现“未定义的列名”错误。 对于你的其他问题: 当您...

这里根本不需要动态SQL。 你可以使用 SELECT Name,

OBJECT_DEFINITION(OBJECT_ID) AS Text_Definition

FROM sys.objects

WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%' + @LikeSearchstr + '%'

虽然我可能会使用CHARINDEX ,但是当您尝试在模式语法和sys.sql_modules搜索包含特殊重要字符的字符串时,它可以正常工作。 SELE...

这应该工作。 string pattern = @"(\w+)'(\w+)";

string replacement = "$1''$2";

string input = "EXECUTE PROCEDURE sp_procedurename ('1', 'test', 'tester's code', '0')";

string result = Regex.Replace(input, pattern, replacement);

如果您不想使用单引号,请使用“$ 1 $ 2...

您不应该使用Python的字符串函数来构建SQL语句。 您可能会面临留下SQL注入漏洞的风险。 你应该这样做: cur.execute('insert into tempPDBcode (PDBcode) values (%s);', s)

注意逗号。 You shouldn't use Python's string functions to build the SQL statement. You run the risk of leaving an SQL injection vulne...

您可以使用heredoc : $string = <<

...

..

EOM;

如果你想防止变量插值,你可以使用nowdoc (自5.3起): $string = <<

...

..

EOM;

heredoc和no...

表(和列)名称不能作为准备语句中的参数提供,您的描述使我相信您已完成。 看到这个旧的SO问题 Table (and column) names can't be provided as parameters in prepared statements, which your description leads me to believe you've done. See this old SO question

您不能嵌套单引号,但可以结束单引号字符串,包含转义的单引号,然后重新输入引号。 尝试这个: rsh fooDNS '

...

BROADCAST_IP_ADDRESS=$(/usr/sbin/ifconfig $IF_NAME | grep broadcast | awk '\''{print $6}'\'')

...

'

尽管如此,这种引用疯狂很快变得丑陋。 如果可能,我建议使用scp / rcp / ftp将正常的bash脚本复制到远程,然后运行该脚本。 如果不这...

您可以在以下网址阅读: http : //initd.org/psycopg/docs/usage.html#the-problem-with-the-query-parameters 只是不要在SQL中使用引号而不是% string Python运算符使用execute()第二个参数,它是要传递给SQL查询的数据: sql = "insert into smth (data, filedate, filedby) values (%s, NOW(), %s)"

ur_psql.execute(s...

看起来你试图用另一个单引号(这很好)来逃避单引号 ,但两者之间还有一个额外的空间。 那必须要去。 更改 ' from dual where TABLE_TEST.FUNCTION_NAME like ' 'VALIDATION1_%' ' '

至 ' from dual where TABLE_TEST.FUNCTION_NAME like ''VALIDATION1_%'' '

It looks like you are trying to escape the single quote...

它不是需要转义的字符串的内容 ,而是它在您发送到服务器的SQL中的表示 。 为了表示单个' ,您需要在SQL语法中编写两个: '' 。 因此, 'IMSoP''s answer'代表字符串IMSoP's answer , ''''代表' , ''''''代表'' 。 但关键是你需要在尝试运行SQL 之前这样做。 您无法将无效的SQL命令粘贴到查询窗口中并告诉它自我修复。 因此,转义的自动化完全取决于您如何创建该SQL。 根据您更新的问题,我们现在知道您正在使用pl / pgsql创建SQL语句,在...

相关文章

一、微信获取access_token接口简介   1、请求:该请求是GET方式请求,所以要携带的参数都

...

首次接受这个项目,看了微信的API,云里雾里,经过几经测试,理清思路 开发者自个申请,微信API给出四

...

首次接受这个项目,看了微信的API,云里雾里,经过几经测试,理清思路 开发者自个申请,微信API给出四

...

using System; using System.Collections.Generic; usi

...

最近微信的公众平台比较火,于是我也想弄个微信来玩玩。如何注册微信公众号?点击之后就可以看到官方的答案了

...

Access Token 在微信公众平台接口开发中,Access Token占据了一个很重要的地位,相

...

https://github.com/lanrion/weixin_authorize Weixi

...

今天遇见一个问题.不知道怎么解决. 如: 自己建立了一个文件read.txt 里面存放这样的 键值

...

在SQL中包含特殊字符或SQL的关键字(如:' or 1 or ')时Statement将出现不可预料

...

access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值