批处理脚本登录sqlplus参数

Posted

技术标签:

【中文标题】批处理脚本登录sqlplus参数【英文标题】:batch script login sqlplus parameters 【发布时间】:2014-01-15 14:07:03 【问题描述】:

我在使用批处理文件中的 sqlplus 连接数据库时遇到了一些问题。 我正在尝试创建一个提示输入服务器/服务名称、用户名和密码的批处理脚本。 它看起来像这样:

    set /P ORCL=Enter server or service_name:
    set /P UN=Enter DB User:
    set /P PWD=Enter password for DB user:
    sqlplus %UN%/%PWD%@ORCL @.\File_to_run.sql

    ...

我不是在本地使用 TNS,而是使用 machinename 连接,如下所示:

    username/password@machinename:1521/service_name

当我通过 cmd 提示符启动 sqlplus 时,这工作得很好,但在我运行这个 bat 文件时却不行。它说用户名或密码错误并提示输入用户名和密码...

我认为当放入sqlplus的参数列表时可能是ORCL变量。但我试过这样引用它:

    ...
    sqlplus %UN%/%PWD%"@ORCL" @.\File_to_run.sql

    sqlplus %UN%/%PWD%@"ORCL" @.\File_to_run.sql

但是没有成功... 如果我尝试相同的方法,但不是使用“AS sysdba”和相应的用户名和密码而不是@service_name/_string,它会正常工作。 有谁知道如何解决这个问题?

BR 粮农组织

【问题讨论】:

【参考方案1】:

最后一个参数也请使用百分号。喜欢:

sqlplus "%UN%/%PWD%@%ORCL%" @.\File_to_run.sql

我不确定为什么在 .\File_to_run.sql 之前需要 @ 符号...

【讨论】:

我的错误...我使用百分号 :-) 像这样: sqlplus %UN%/%PWD%@%ORCL% @.\file.sql 文件前的@ run 是 sqlplus 特定的符号,所以它必须在那里:-) 上面的代码能解决你的问题吗?请注意第一个参数是双引号。您需要为 ORCL 输入输入 'machinename:1521/service_name' 值。

以上是关于批处理脚本登录sqlplus参数的主要内容,如果未能解决你的问题,请参考以下文章

cmd 执行sql脚本,该怎么处理

使用 SqlPlus 执行 Oracle 脚本;如果有任何异常,在脚本处理之前进入状态

无法在 windows 批处理脚本中运行 sqlplus || ORA-28040: 没有匹配的身份验证协议异常

使用 SQLPLUS 中的数据库值作为批处理文件的参数

从 shell 脚本运行 sqlplus 时管理错误处理

获取 sqlplus 的结果并放入脚本 .bat 上的变量中