【问题标题】:How to run a script in DB2 along with other sqls如何在 DB2 中与其他 sql 一起运行脚本
【发布时间】:2014-04-16 13:21:57
【问题描述】:

我对 DB2 有疑问。例如,我创建了一个脚本。

BEGIN
SELECT * FROM ABC;
END

现在我想在一个报告生成器中运行它,我已经有一些带有连接和所有内容的选择查询。该脚本的目的是读取输入并解析该字符串并将详细信息存储在临时表中(这部分已完成)。现在我的其他选择查询将在此表上运行。

但是我如何将这两个东西放在一个文件中,或者我应该创建单独的文件(脚本中的一个过程并在 sql 报告中执行它)。但我想知道是否有办法在同一个文件中这样做。

【问题讨论】:

  • 在 .sql 文件中?你的问题不清楚。
  • 是的,我会尽力解释。我已经有一个 .sql 文件,其中有很多选择 qurries 来生成报告。现在我需要修改一些来自用户的信息。所以我为此创建了一个脚本,但现在我不明白该脚本放在哪里。我尝试将脚本块放在顶部的同一个文件中,但它不起作用。我希望我现在清楚了。
  • 您可能需要将.sql 文件中的语句终止符更改为分号以外的内容?
  • 嗨,mustaccio,你是在建议像 DELIMITER 这样的东西吗,因为我试过了,但似乎不起作用。
  • 请改写你的答案。输入是什么,期望的输出是什么,过程是什么。另外,使用代码格式

标签: mysql sql stored-procedures db2


【解决方案1】:

在 DB2 中,当在 db2clp 中使用脚本时,无法处理标准输入。此控制台仅用于向 DB2 发送命令,但命令应该已经准备好。

为了处理用户输入,您使用 shell 脚本,例如 Windows 中的 .bat 或 bash/korn shell 脚本。使用这些脚本,您可以获取用户输入,然后构造要发送到 DB2 的命令。

read id
db2 "select * from emp where id = ${id}"

对于之前的方法,您需要为每个平台(windows 和 *NIX-bash 或 korn)创建脚本

但是,在 DB2 中还有另一种处理用户输入的方法,但您需要使用 CLPPlus。这就像 SQL*Plus,您可以将用户的输入放入一个变量中,然后使用该值查询数据库。

【讨论】:

  • 我用过 CLPPlus 几次,不是很多,但我认为那个控制台有一些小错误。
【解决方案2】:

你写的是一个匿名块。当您调用脚本时,它会被执行,但不会返回任何输出。您需要一个存储过程来检索结果集。

【讨论】:

  • 是的,我明白,但我存储在表中的数据不存在吗?
  • 数据中的表会一直存在,因为你没有执行DML(删除、更新、删除)。您需要从表中检索行并获取它们。
  • 您是否向用户询问一些信息以创建您的查询?例如:给我 userId。然后 select * from emps where userId = XXX
  • 我的意思是,您是否需要将一些信息传递给查询(参数标记,或存储过程中的参数)?
  • 我将从用户那里获得一些 ID(空格分隔的数字),现在我需要从数据库中获取这些 ID 的一些信息。所以我创建了一个脚本来解析输入以分离所有 Id 并将它们放在一个表中。这样我就可以简单地使用这些 ID 来获取详细信息。现在我不明白如何将这个脚本与现有的 .sql 一起使用
猜你喜欢
  • 2012-03-05
  • 2014-07-29
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 2022-12-10
相关资源
最近更新 更多