如何在批处理文件中绕字符串传递单引号

时间:2016-11-29 05:52:54

标签: oracle batch-file

从批处理文件中调用sql脚本,如下所示

import

调用脚本显示为

@script.sql "pass" "primary_key_1"

我希望显示为

insert into values(pass,primary_key_1)

3 个答案:

答案 0 :(得分:0)

如果您使用双引号和单引号括起来的参数或仅使用单引号调用脚本:

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

或者,如果您在没有单引号的情况下调用它:

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

纠正我,如果有什么我误解了,可以随意提问!

答案 1 :(得分: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'))

答案 2 :(得分:0)

如果script.sql在哪里:

INSERT INTO <some_table> VALUES ('&1', '&2');

然后

从SQL * Plus调用script.sql,如下所示:

@script.sql 'pass' 'primary_key_1'

应该产生预期的结果。

从OS命令提示符调用它:

sqlplus user/password@db @script.sql "pass" "primary_key_1"

也应该有所需的结果。