我们正在尝试运行一个SQL脚本,它将为我们提供一些数据库信息,然后我们可以将这些信息放入下一部分。它将从我们的库存表中获取此查询的结果,然后查询服务器vi gv$services上的数据库,以确保正在运行的内容与我们的库存相匹配。然而,在继续之前,我们在获取想要开始的输出时遇到了问题。我们正在通过sqlplus在Oracle 19 c数据库上进行尝试。
我们尝试将此作为一个测试来分配变量vThisDB,例如:
BEGIN
FOR mydb in (
SELECT DISTINCT db_name, hostname, service_name FROM inventory
)
LOOP
mydb.db_name := vThisDB;
DBMS_OUTPUT.PUT_LINE('current DB is: ' || vThisDB);
END LOOP;
END;
/
我们得到的结果是这样的:
SQL> set serveroutput on size unlimited
SQL> @services.sql
当前DB为:
它是空白的,当我们想要的是:
当前DB为:TheDatabaseName(即上述查询的db_name列)
我们认为这与查询拉取3列的事实有关,这是插入下一部分所必需的。我们如何让所有3列同时工作,或者如何将查询结果输出到单独的变量中?谢谢你!
1条答案
按热度按时间ajsxfq5m1#
输出为空,因为您执行了相反的操作。
示例
inventory
表:你的脚本,修正(添加了局部变量声明,缺少右括号和第7行,显示了你应该做的事情):