Просто идея, но почему бы не создать файл sql из файла bat, записать в него команды sql, а затем выполнить его.Когда он закончится, вы можете удалить файл sql.
@ECHO OFF
SET /p usr=username:
SET /p pwd=password:
SET /p dbname=dbname:
set /p tablename=tablename:
SET "sql1=select * from table where ^(something^)^;"
SET "sql2=select ^(something^) from table where ^(something^)^;"
SET "sql3=^(SELECT 1 + LEVEL-1 idx FROM dual CONNECT BY LEVEL ^<^= 10^)^;"
@echo %sql1% > temp.sql
@echo %sql2% >> temp.sql
@echo %sql3% >> temp.sql
sqlplus %usr%/%pwd% @temp.sql
код обновлен, чтобы учесть специальные символы, которые необходимо экранировать, используйте ^ для экранирования специальных символов.
Вы также можете захотетьпосмотреть на этот ответ
Надеюсь, все пройдет хорошо.