当前位置: 首页 > 知识库问答 >
问题:

我们可以直接从命令行在sqlcl中运行javascript,还是需要sql包装器脚本?

班建义
2023-03-14

我知道我可以直接从命令行运行sql文件,如下所示:

/sql-登录用户/password@tnsname ./脚本/sql\U脚本。sql参数1

我知道我可以从sqlcl shell中调用javascript程序,如下所示:

/sql

问题是我是否必须使用sql包装器脚本,或者如何在没有包装器的情况下直接从命令行运行javascript,如下所示:

/sql-登录用户/password@tnsname ./脚本/js\U脚本。js参数1

共有1个答案

冀萧迟
2023-03-14

我怎么还没让这成为可能??它现在在我的待办事项清单上...

与此同时,你可以这样做。

➜  examples echo "script lsEngines.js" | sql klrice/klrice


SQLcl: Release 21.3 Production on Tue Jul 20 13:33:26 2021

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

Last Successful login time: Tue Jul 20 2021 13:33:28 -04:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

login.sql found in the CWD. DB access is restricted for login.sql.
Adjust the SQLPATH to include the path to enable full functionality.

ScriptEngineFactory Info
jdk.nashorn.api.scripting.NashornScriptEngineFactory@373f7450
    Script Engine: Oracle Nashorn (14.0.2)
    Engine Alias: nashorn
    Engine Alias: Nashorn
    Engine Alias: js
    Engine Alias: JS
    Engine Alias: JavaScript
    Engine Alias: javascript
    Engine Alias: ECMAScript
    Engine Alias: ecmascript
    Language: ECMAScript (ECMA - 262 Edition 5.1)
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

我的“lsEngines.js”是什么内容

var ScriptEngineManager = Java.type("javax.script.ScriptEngineManager")
mgr = new ScriptEngineManager();
var factories = mgr.getEngineFactories();

factories.forEach(function(factory) {

          ctx.write("ScriptEngineFactory Info\n" + factory.toString() + "\n");

          var engName = factory.getEngineName();
          var engVersion = factory.getEngineVersion();
          var langName = factory.getLanguageName();
          var langVersion = factory.getLanguageVersion();

          ctx.write("\tScript Engine: "+engName+" ("+engVersion+")\n");

          var engNames = factory.getNames();
          engNames.forEach(function(name) {
              ctx.write("\tEngine Alias: "+ name + "\n");
          })

          ctx.write("\tLanguage: "+langName+" ("+langVersion+")\n");

      })
 类似资料:
  • 问题内容: 我的package.json看起来像: 我要运行的js脚本是app.js。我无法使用 节点app.js 直接运行它,因为app.js包含新的语言语法。 因此,我必须按照上面定义的启动脚本,使用 npm start 通过babel运行它。这里没有问题。 我的问题是如何直接在命令行中运行cmd,可以做到吗?类似于: npm运行babel-node –presets env app.js 问

  • 问题内容: 当我尝试从PyCharm IDE运行程序时,一切正常,但是如果我输入Fedora: 在shell提示中,我从1个模块收到导入错误。 当从IDE启动时,PyCharm可以执行哪些操作以使解释器找到我的依赖项?如何获得脚本以找到其依赖项,以便可以使用singe命令启动它? 问题答案: 有一些可能的原因可能导致这种情况: 相同的python解释器?检查与 它是同一工作目录吗?检查与 中的差异

  • 问题内容: 我刚刚开始使用node.js,并且对Python有一定的经验。在Python中,我可以检查变量是否设置为,是否可以直接运行我的脚本。在那种情况下,我可以运行测试代码或以其他方式直接使用该模块。 node.js中有类似的东西吗? 问题答案: 您可以用来确定当前脚本是否由另一个脚本加载。 例如 : : 运行将输出: 运行将输出:

  • 我的package.json看起来像: 我想运行的js脚本app.js.我不能直接使用节点app.js运行它,因为app.js包含新的语言语法。 因此,我必须按照上面定义的启动脚本,使用NPMStart通过babel运行它。这里没有问题。 我的问题是如何在命令行中直接运行cmd,可以吗?类似的东西: npm运行babel节点——预设环境应用程序。js

  • 问题内容: 我正在寻找一种使用PHP的方法,以检测脚本是从外壳上的手动调用运行的(我登录并运行该脚本),还是从crontab条目运行。 我有各种用php编写的维护类型脚本,这些脚本已设置为在crontab中运行。有时,我需要提前手动运行它们,或者如果发生故障/损坏,则需要运行几次。 这样做的问题是,每次手动运行脚本时,我也不想发生某些任务(发布到Twitter,发送电子邮件等)时需要设置的外部通知

  • 问题内容: 我已经阅读了以前发布的问题。有些含糊不清,没有一个解决我的问题,所以我不得不再问一次。 我有两个简单的课程, 另一类是 我在Windows cmd中的基本文件夹“ basic”中。我用编译 将创建一个文件夹和子文件夹。 这会产生大量错误。许多答案旨在指定无效的完整路径。我的班级在One中,因此使用-cp指定One也不起作用。 问题答案: 您将其运行为: …但是从 根 目录(), 不是