2016-11-29 77 views
-1

调用从批处理文件中的SQL脚本如下如何绕过字符串单引号中的批处理文件

@script.sql "pass" "primary_key_1" 

调用脚本显示为

insert into values(pass,primary_key_1) 

我想出现

insert into values('pass','primary_key_1') 
+0

你尝试了什么?发生了什么,例如,当你试图通过'''pass''''时? – mathguy

+0

@mathguy INSERT INTO XML_AUDIT VALUES(Businessl,Progress,SYSTIMESTAMP)仍然是同样的问题。我想单引号变量,我通过 – zeesu

回答

0

如果您使用带有双引号或单引号括起来的参数或只用单引号括起脚本:

@echo off 
echo INSERT INTO VALUES(%~1, %~2) 
pause 

或者,如果你不带单引号称之为:

@echo off 
echo INSERT INTO VALUES('%~1', '%~2') 
pause 

纠正我,好像有什么事我误解,并随时提问!

0

创建功能

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')) 
0

如果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" 

也应该有希望的结果。