2013-08-24 4 views
0

Я хочу создать новую таблицу в oracle с sqlplus и batch.Использование командного файла для создания новой таблицы в oracle/sqlplus

sqlplus user/password @create_tables.sql 

это успешно

, но это не то, что я хочу. Я хочу, чтобы пользователь вводил год. Мой командный файл выглядит следующим образом:

@echo off 

set /p year=__YEAR (YYYY)? 
sqlplus user/password 
create table data%year% 
(Nama varchar2(25), 
value number); 
echo Successfull 
pause 

скрипт останавливается здесь

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Aug 25 06:07:26 2013 

Copyright (c) 1982, 2005, Oracle. All rights reserved. 


Connected to: 
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 
With the Partitioning, OLAP and Data Mining options 

SQL> 

, что случилось?

ответ

1

В вашем примере вы запустили интерактивную оболочку (с приглашением SQL>), и при выходе из нее пакетный интерпретатор будет запускать строку create в качестве новой команды (и сбой).

Если нет другого способа сделать это, вы можете echo необходимые команды временному filename.sql в %temp%, а затем позвонить этому. Синтаксис здесь может быть не 100%, но я надеюсь, что это отправная точка:

@echo off 
set /p year=__YEAR (YYYY)? 
    rem Set command in temp file : 
echo create table data%year% (Name varchar2(25), value number); > @%temp%\temp.sql 
    rem Now run the above command : 
sqlplus user/password @%temp%\temp.sql 
echo Successfull 
pause 
+0

Thank U очень много. я добавил ** echo exit> @% temp% \ temp.sql ** синтаксис перед ** rem Теперь запустите указанную выше команду **. скрипт работает для меня. еще раз спасибо. – flyingbird013

Смежные вопросы