Oracle SQL Developer - 使用 Job Wizard PL/SQL 的基本选择查询
Posted
技术标签:
【中文标题】Oracle SQL Developer - 使用 Job Wizard PL/SQL 的基本选择查询【英文标题】:Oracle SQL Developer- Basic Select query using Job Wizard PL/SQL 【发布时间】:2017-05-15 03:12:01 【问题描述】:我一直在尝试让 SQL Developer 定期自动运行查询(在示例 HR 数据库上)。根据我的研究,我确定对我来说最好的选择是使用 Job Wizard 和 PL/SQL(它调用 DBMS_SCHEDULER?)。
我创建了一个每 5 分钟重复一次的“时间表”,称为:every_5mins
到目前为止,我在“工作详情”部分的内容如下: 职位名称:Select_Employees
作业类别:SYS.DEFAULT_JOB_CLASS
作业类型:PL/SQL 块
何时执行作业:计划
时间表:SYSTEM.EVERY_5MINS
PL/SQL
CREATE OR REPLACE
PROCEDURE get_emp_rs (p_deptno IN HR.FIRST_NAME,
p_recordset OUT SYS_REFCURSOR) AS
BEGIN
OPEN p_recordset FOR
SELECT FIRST_NAME,
LAST_NAME
FROM
HR.EMPLOYEES
WHERE FIRST_NAME=p_recordset
END;
/
它返回一个错误: “在预期以下情况之一时遇到符号“/”:(开始大小写声明)...”,其余部分被截断
我在正确的轨道上吗?编写它以便每 5 分钟运行一次查询的正确方法是什么?我以前从未使用过 Oracle SQL Developer。
提前致谢。
【问题讨论】:
SQL 语句以分号结束。 我有一个新错误:第 1 行,第 750 列 PLS-00103:在预期以下情况之一时遇到符号“CREATE”:(开始大小写 dec..” 【参考方案1】:我有一个新错误:第 1 行,第 750 列 PLS-00103:遇到符号“CREATE”
PL/SQL 负载是我们希望我们的作业执行的代码。因此,您似乎正在尝试每五分钟安排一次存储过程的创建。调度程序期待一个可执行的 PL/SQL 调用,而不是 DDL。
所以您需要先创建存储过程,然后启动作业向导。 PL/SQL 块应该是这样的:
declare
rc sys_refcursor;
begin
get_emp_rs ('MAYZIE', rc);
end;
这为我们指出了您的场景的根本问题:作业在后台运行。作业无法接受用户输入或显示输出。因此,虽然您的作业每五分钟运行一次,但您永远不会看到结果集。您需要一个将结果写入某处(表格、文件)的过程,该过程可由其他程序读取和显示。
【讨论】:
只是为了让我理解清楚,我需要: 1.创建一个Procedure?:-Procedure->右键单击->新建procedure 可能。好多年没用SQL Developer了,记性比较生疏 我之前的评论被截断了,我想问的是:为了让我理解清楚,我需要:1.创建一个程序?:-程序->右键单击->新程序(get_emp_rs ) -Code: SELECT FIRST_NAME, LAST_NAME from HR.EMPLOYEES [我如何指定它将结果写入某处(即任何/一些新表/文件)? 2.Job->右键New Job(wizard)PL/SQL Block:declare rc sys_refcursor;开始 get_emp_rs ('MAYZIE',rc);结尾; ?请原谅我的帖子的特殊性,我以前从未使用过 SQL 开发人员 我也不了解 SQL Developer,但我非常怀疑是否有任何方便的右键单击选项可以将过程中的引用游标输出捕获到文件中。顺便说一句,如果问题是关于专门使用 SQL Developer,那么你应该用oracle-sqldeveloper
标记它。以上是关于Oracle SQL Developer - 使用 Job Wizard PL/SQL 的基本选择查询的主要内容,如果未能解决你的问题,请参考以下文章
我用PL/SQL-Developer登录oracle时出现 ORA-12560:TNS:协议适配器错误怎么办?急!!!!!
使用Oracle SQL Developer迁移MySQL至Oracle数据库