0

oracle我想用sqlplusbatch文件创建新表。

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>

怎么了?

4

1 回答 1

1

在您的示例中,您启动了一个交互式 shell(带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
于 2013-08-25T09:11:09.600 回答