如何绕过字符串单引号中的批处理文件
问题描述:
调用从批处理文件中的SQL脚本如下如何绕过字符串单引号中的批处理文件
@script.sql "pass" "primary_key_1"
调用脚本显示为
insert into values(pass,primary_key_1)
我想出现
insert into values('pass','primary_key_1')
答
如果您使用带有双引号或单引号括起来的参数或只用单引号括起脚本:
@echo off
echo INSERT INTO VALUES(%~1, %~2)
pause
或者,如果你不带单引号称之为:
@echo off
echo INSERT INTO VALUES('%~1', '%~2')
pause
纠正我,好像有什么事我误解,并随时提问!
答
创建功能
create or replace FUNCTION "SQL_QUOTE"
(
p_str IN VARCHAR2
) return VARCHAR2
is
BEGIN
return '''' || p_str ||'''';
END;
用法:
select 'This is a ' || sql_quote('quoted-string') || ' in a string;' from dual;
因此您的线路变得
insert into values(sql_quote('pass'),sql_quote('primary_key_1'))
答
如果script.sql其中:
INSERT INTO <some_table> VALUES ('&1', '&2');
然后
从SQL调用script.sql * Plus中,像这样:
@script.sql 'pass' 'primary_key_1'
应该产生预期的结果。
在操作系统命令提示符下调用它:
sqlplus user/[email protected] @script.sql "pass" "primary_key_1"
也应该有希望的结果。
你尝试了什么?发生了什么,例如,当你试图通过'''pass''''时? – mathguy
@mathguy INSERT INTO XML_AUDIT VALUES(Businessl,Progress,SYSTIMESTAMP)仍然是同样的问题。我想单引号变量,我通过 – zeesu