【发布时间】:2015-02-05 02:50:10
【问题描述】:
运行我的批处理 (.BAT) 文件(该文件运行另一个 SQL 文件)时出现此错误 ORA 0955。
批号:
@echo off
setlocal
set "SqlUserName="
set "SqlPassword="
set "SqlDatabase="
:Credentials
set /P "SqlUserName=Enter username: "
set /P "SqlPassword=Enter password: "
set /P "SqlDatabase=Enter database: "
@(
echo whenever sqlerror exit failure
echo connect %SqlUserName%/%SqlPassword%@%SqlDatabase%
echo @C:\Users\njediaz\Desktop\sql.sql
echo exit
) | sqlplus.exe -s /nolog
if errorlevel 1 goto Credentials
echo About to exit.
timeout /t 30
endlocal
SQL.sql 代码
--conn cpi/cpi12345!@fgicrcm
--conn &&username@&&DBNAME
SET HEADING OFF;
SET ECHO OFF;
SET PAGES 999;
SET LONG 999999;
SET LONGCHUNKSIZE 999999;
SET PAGESIZE 0;
SET LINESIZE 500;
/****************/
/*BACKUP Scripts*/
/****************/
--Use SPOOL then set the filename and location of the scripts to be saved.--
--Use DBMS_METADATA.get_ddl and specifiy the OBJECT_TYPE, OBJECT_NAME and OWNER_NAME--
SPOOL C:\GeniisysUpdater\Backup\Scripts\GIAC_ORDER_OF_PAYTS_PKG.pks
SELECT DBMS_METADATA.get_ddl ('PACKAGE_SPEC', 'GIAC_ORDER_OF_PAYTS_PKG', 'CPI') FROM DUAL;
SPOOL OFF
HOST ECHO / >> C:\GeniisysUpdater\Backup\Scripts\GIAC_ORDER_OF_PAYTS_PKG.pks
SPOOL C:\GeniisysUpdater\Backup\Scripts\GIAC_ORDER_OF_PAYTS_PKG.pkb
SELECT DBMS_METADATA.get_ddl ('PACKAGE_BODY', 'GIAC_ORDER_OF_PAYTS_PKG', 'CPI') FROM DUAL;
SPOOL OFF
HOST ECHO / >> C:\GeniisysUpdater\Backup\Scripts\GIAC_ORDER_OF_PAYTS_PKG.pkb
/*********************/
/*INSTALL New Scripts*/
/*********************/
SPOOL C:\GeniisysUpdater\Install\Scripts\Logs\GIAC_ORDER_OF_PAYTS_PKG_pks.log
@C:\GeniisysUpdater\Install\Scripts\GIAC_ORDER_OF_PAYTS_PKG.pks
SPOOL OFF
SPOOL C:\GeniisysUpdater\Install\Scripts\Logs\GIAC_ORDER_OF_PAYTS_PKG_pkb.log
@C:\GeniisysUpdater\Install\Scripts\GIAC_ORDER_OF_PAYTS_PKG.pkb
SPOOL OFF
/***************************/
/*RECOMPILE Invalid Scripts*/
/***************************/
SPOOL C:\GeniisysUpdater\Install\Scripts\Logs\recompile_scripts.log
@C:\GeniisysUpdater\Backup\rcpl.sql
SPOOL OFF
/***************************/
/*Check if batch is done*/
/***************************/
SPOOL C:\GeniisysUpdater\Install\Files\batchDone.log
SELECT 1 FROM DUAL /
SPOOL OFF
EXIT
我尝试在 TOAD 中运行每个数据库文件(pks、pkb、sql),但没有收到任何错误。
这是我对以下脚本的代码:
【问题讨论】:
-
如果您要重新执行脚本,请确保在 CREATE 之前有 DROP 语句以使脚本可重新执行。另一个原因可能是语句后面有一个“/”,但是你已经用分号结束了前一个语句。从而重新执行缓冲区中的语句。
-
我应该删除“/”吗?还是分号?
-
坚持终结者之一。分号用于单个语句,“/”用于块。
-
你能在错误发生之前和之后显示几行代码吗?
-
@OP,请参阅 Jon Heller 的回答。
标签: sql database oracle batch-file sqlplus