Передать параметр varchar в файл sql через пакетный файл - PullRequest
2 голосов
/ 16 августа 2011

У меня есть пакетный файл, который запускает несколько файлов sql и передает им параметры.Входные параметры хранятся в текстовом файле, который читается командным файлом.

Я пытаюсь передать значения varchar в IN предложение SQL.

Например,

В моем входном файле в этой записи

var1="'tommy','jim'"

В пакетном файле

<code to read file , assuming %1 has the var1 value>
set param=%~1

sqlplus %DBCONN% @%programFolder%\test.sql %param%

test.sql (имя varchar2)

select * from table where name in (&1);

Это выдает ошибку, сообщая неверный номер при попытке запустить

select * from table where name in (tommy);


Если я отвечаю эхом прямо перед sql stmt, он отображает 'tommy', 'jim', но в sql его удаляет jim и одинарные кавычки ...

Пожалуйста, помогите!


Теперь я отредактировал запись во входном файле как var1="'''tommy''','''jim'''"

, она выглядит как select * from table where name in ('tommy');

Но оно усекает второе значение

Любая подсказка, как включить запятую ??

Ответы [ 2 ]

1 голос
/ 17 августа 2011

Наконец-то нашёл способ

входной файл - var1=('tommy','jim')

Удалить скобки из файла sql select * from table where name in &1;

Это работает, я понятия не имею, почему взятие запятой было такой проблемой, должен был быть способ пропустить запятую! Если кто-нибудь узнает, пожалуйста, дайте мне знать.

Спасибо

0 голосов
/ 16 августа 2011

Тильда (~) удаляет кавычки из переменной.

Попробуйте использовать var1='tommy','jim' во входном файле и set param=%1 в пакетном скрипте.

...