问题标签 [sqlcl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
395 浏览

plsql - SQLCL - 引用文件中存在 SQL 错误时出现意外 Java 异常

当在命令行脚本与单独的 sql 文件中遇到 sql 错误时, 我使用SQLCL遇到不同的行为。

原始脚本,命令行 - 预期的 sql 错误

当直接从 SQLCL 命令提示符执行创建表语句时,上述脚本按预期执行。正如预期的那样,第二个表创建语句报告了一个错误,表明该表已经存在。

命令行预期的结果:


更新的脚本,外部文件 - java 异常:

但是,如果修改脚本以将“ create table ”语句移动到单独的 sql 文件中,则第二次执行不会报告 ORA-00955,而是会引发 Java 运行时异常

create_t1.sql 的内容:

导致 java 运行时异常:

更新 2,ext 文件,注销 - 没有 java 异常

如果ERRORLOGGING设置为OFF,则不报java异常,按预期返回SQL错误。

结果包含没有 java 异常但缺少必要的 SPERRORLOG 记录的 sql 错误:

任何人都有关于如何使用 sql 文件的建议,这些文件会导致适当的错误被记录到 SPERRORLOG 而没有 java 异常?

0 投票
2 回答
746 浏览

batch-file - SQL语句完成后批处理文件停止并且不会继续退出

我正在运行一个简单的批处理文件来执行 SQL 语句。

批处理文件:

SQL 语句运行完美。它将查询结果假脱机到 CSV 文件并返回到SQL>提示。

问题是批处理文件没有转到下一行以退出 SQL 和 CMD 窗口。无论我测试什么命令,批处理文件都不会转到第 3 行。

我需要添加到*.sql文件中以强制它结束吗?使用退出我错过了什么吗?我试过QUITHOST返回 CMD,ECHO打印一些东西,但命令无关紧要,它从不去那行,但确实返回到 SQL 提示符。

0 投票
1 回答
478 浏览

sqlcl - Sqlcl - 错误消息 = java.library.path 中没有 ocijdbc18

我设置了以下环境变量并从 sqlcl 运行以下命令,

sql $ABC_DB_PROD_USERNAME/$ABC_DB_PROD_PASSWORD@"$ABC_DB_PROD_TNS"

我在 java.library.path 中收到错误消息 = no ocijdbc18

我不知道我该怎么做。

0 投票
1 回答
187 浏览

sql-insert - 如何在 sqlcl 中添加多行?

我正在尝试在我的表中添加多行。我尝试遵循一些在线解决方案,但我不断收到 ORA-00933:SQL 命令未正确结束。如何一次添加多行。

插入 driver_detail 值(1003,'sajuman','77f8s0990',1),(1004,'babu ram coi','2g64s8877',8);

0 投票
1 回答
41 浏览

oracle - 如何在sqlcl中获取字符串的长度

我试图根据名称中字符串的长度显示前三行。但系统只读取字符串列的预定义长度而不是列中的字符串

0 投票
0 回答
368 浏览

bash - oracle sqlcl 通过 bash 脚本未知主机指定错误

我的 virtualbox 中有 oracle 虚拟机,并且我希望能够从主机操作系统运行 shell 脚本,该脚本将:1. 将 .sql 脚本放入 VM 2. 在 VM 上运行 sqlcl 和 .sql 脚本

当我从我的主机运行 oracle sqlcl 时,它会抛出一个错误 - 未知主机。基本上,当我在 VM 机器 bash 中运行 sqlcl 时,它可以工作,当我在 ssh(es) 到 VM 的脚本中运行它时,它不起作用。

我确定我错过了一些关于 linux 中用户/ssh/sessions 的非常基本的东西。如果有人能指出我也应该了解更多信息,那就太好了。

我的 bash 脚本:

runscript 是我放在我的虚拟机上运行提供的 .sql 脚本的脚本 - 它是这样的:

我得到的输出:

0 投票
1 回答
1861 浏览

.net - 将程序集加载到 SQL Server 2017 数据库中

我正在尝试将 CLR 程序集加载Split.dll到 SQL Server 2017 数据库中:

从“D:\SqlClr\split.dll”创建程序集拆分,权限设置 = SAFE GO

我已经使用 Visual Studio 2019 构建了这个程序集。但是我收到了这个错误:

消息 10301,级别 16,状态 1,第 1 行
程序集“拆分”引用程序集“netstandard,版本=2.0.0.0,文化=中性,publickeytoken=cc7b13ffcd2ddd51.”,当前数据库中不存在。SQL Server 试图从引用程序集所在的同一位置定位并自动加载引用程序集,但该操作失败(原因:2(系统找不到指定的文件。))。请将引用的程序集加载到当前数据库中,然后重试您的请求。

我尝试对 SQL Server 2014 和 Visual Studio 2015 执行相同的操作。实际上,我使用相同的 C# 代码来获取 DLL,并使用相同的 SQL 语句(如上所示)来加载它。在这种情况下,一切都运行良好。

我读过Sql Server CLR 加载程序集失败,但是当我尝试加载时netstandard.dll

我收到此错误:

消息 6212,级别 16,状态 1,第 1 行
CREATE ASSEMBLY 失败,因为安全程序集“System.Diagnostics.Tracing”中类型“System.Diagnostics.Tracing.EventCounterGroup”的方法“EnsureEventSourceIndexAvailable”正在存储到静态字段。在安全程序集中不允许存储到静态字段。

有谁能够帮我?为什么相同的代码在 SQL Server 2014 和 Visual Studio 2015 中内置的 DLL 中运行良好,而我现在遇到问题(SQL Server 2017、Visual Studio 2019)?解决这个问题的方法是什么?

0 投票
1 回答
171 浏览

oracle - 用于打印 .SQL 文件名的 SQL 命令

是否有任何 SQL 命令可以在 sqlplus 提示符下打印当前正在执行的 .SQL 文件的名称?

有一种 Unix 方法可以做到这一点。但我正在寻找显示当前文件名的有效 SQL 命令。

0 投票
0 回答
1001 浏览

oracle - Oracle SQL Developer 命令行 (SQLcl) - 无法启动 Oracle sql.bat (sqlcl)

不确定这是 Windows 还是 Oracle 相关的问题。在 Windows 19 上安装 Oracle 19c 软件和 ORCL 数据库后,我从未使用过 sqlcl 并想试一试。

我的路径:PATH=C:\Program Files (x86)\Common Files\Oracle\Java\javapath; C:\app\oracle\product\19.3.0\dbhome_1\bin ;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0 \;C:\Windows\System32\OpenSSH\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;

所以我可以轻松调用位于我的路径中的 sql.bat,C:\app\oracle\product\19.3.0\dbhome_1\bin; 文件夹。

脚本 sql.bat 看起来很简单(只有这两行):

所以如果我这样称呼它:

无论我做什么,仍然是同样的错误,例如。sql.bat /nolog

当我从这个文件夹中执行此操作时:C:\app\oracle\product\19.3.0\dbhome_1\sqldeveloper\sqldeveloper\bin,有一个正确的响应。我也可以登录数据库。我也注意到,我在这个位置成功只是因为在输入 sql 时,这里直接调用的是 sql.exe,而不是 sql.bat。

文件夹 C:\app\oracle\product\19.3.0\dbhome_1\sqldeveloper\sqldeveloper\bin 仅包含 sql.exe(加上自述文件和 linux shell 文件)。

我做错了什么,我无法运行 sql.bat(又调用 sql.exe)?

0 投票
0 回答
142 浏览

excel - 从 MS Excel VBA 宏启动 .bat 文件(通过 SQLcl 连接到 Oracle)

我正在编写一个需要:

  1. 启动 .bat 文件
  2. 等到 .bat 文件完成(数据通​​过 SQLcl 从 Oracle 下载到 .csv)
  3. 继续执行 VBA 的其余部分

我为这个问题找到了两种解决方案:

第一个 - 通过壳牌:

这会打开 .bat 文件,但窗口会立即关闭并且不执行任何操作。

第二个 - 通过 Windows 脚本宿主对象:

此选项不起作用(lngErrorCode=0),我不太清楚为什么。我对其他通过 BTEQ 从 Teradata 数据库下载数据的 .bat 文件使用相同的方法,因此我假设 SQLcl/Oracle 数据库不想使用该方法。

你有什么想法可以克服这个问题吗?

.bat 文件代码:

任何建议将不胜感激。问候。