【问题标题】:sqlplus - No characters are allowed after a here-string header but before the end of the linesqlplus - 在此处字符串标题之后但在行尾之前不允许使用任何字符
【发布时间】:2022-01-11 06:06:20
【问题描述】:

我第一次尝试使用 sqlplus 在 PowerShell 脚本中执行 Oracle 查询。我收到此错误消息:

At line:1 char:73
+ ... user/pw@RRRPRD.company.net:1521/RRRPRDC @"C:\Users\ ...
+                                                                 ~
No characters are allowed after a here-string header but before the end of the line.

它似乎指向 C: 在 @" 之后。有什么想法吗?我似乎在做 this 示例中的操作。当我尝试对连接信息执行 echoargs 时遇到同样的错误。

这是我在命令行中测试的 powershell 代码,因为它永远挂起运行程序:

sqlplus user/pw@RRRPRD.company.net:1521/RRRPRDC @"C:\Users\me\Documents\2021\temp endToEnd\short.sql"

这是使用 powershell 5.1。有任何想法吗?我看到here string header,但由于我遵循上面 sqlplus 链接中接受的示例,我不清楚它有什么问题。

【问题讨论】:

  • 您错过了此处字符串的关闭。另外,为什么不只使用常规字符串?您似乎还缺少每个参数之间的一些空格
  • @AbrahamZinala - 你有例子吗?我不清楚你在说什么。
  • 一个 here-string@" 开头并以"@ 结尾。看起来普通字符串也可以
  • @AbrahamZinala - 我尝试在双引号末尾添加一个@,它有相同的错误消息,并指向“C:仍然
  • 我对调用sqlplus不熟悉,但是前面提到过,参数之间好像少了一个空格。从外观上看,您也不需要此处的字符串。一个简单的:"my string here" 可以;即带有双引号或单引号的常规字符串。

标签: powershell sqlplus


【解决方案1】:

替换

@"C:\Users\me\Documents\2021\temp endToEnd\short.sql"

具有以下任何一种:

  • `@"C:\Users\me\Documents\2021\temp endToEnd\short.sql"
  • "@C:\Users\me\Documents\2021\temp endToEnd\short.sql"
  • '@C:\Users\me\Documents\2021\temp endToEnd\short.sql'

注意:这里使用verbatim (single-quoted) string ('...') 可以说是最好的选择,因为路径不包含变量引用;如果是这样,则需要expandable (double-quoted) string ("...")

所有变体最终都会将以下字符串逐字传递给sqlplus,我认为这是您的意图:

@C:\Users\me\Documents\2021\temp endToEnd\short.sql


据推测,您正试图将 @ 作为参数的 逐字 部分传递给 sqlplus - CLI 之间的常见约定是使用 @<file-path> 来请求参数数据从文件中获取,而不是使用参数值本身。

但是,与其他 shell 不同,@ 是 PowerShell 中的一个元字符,可用于多种用途。

因此,@ 应该是参数开头的 逐字 字符,必须转义(使用`)或引用字符串的一部分,如上所示。请参阅概念性的 about_Special_Characters 帮助主题。

如果 未转义 参数初始 @ 后跟 "',PowerShell 认为您正在尝试创建一个 here-string,它具有特殊的多行语法要求;错误消息表明它们不满足。

【讨论】:

    猜你喜欢
    • 2012-01-14
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 2018-03-23
    • 2012-02-10
    • 1970-01-01
    • 2019-07-17
    • 2020-07-29
    相关资源
    最近更新 更多