Oracle 从存储过程中的Select语句设置变量值
我对PL/SQL非常陌生。我有以下代码:Oracle 从存储过程中的Select语句设置变量值,oracle,variables,select,stored-procedures,plsql,Oracle,Variables,Select,Stored Procedures,Plsql,我对PL/SQL非常陌生。我有以下代码: BEGIN DBMS_SCHEDULER.create_schedule ( schedule_name => 'By_Days_Of_Weak_Schedule', start_date => SYSTIMESTAMP, repeat_interval => 'freq=weekly; BYDAY=MON,TUE,WED'); END; //Schedule created create
BEGIN
DBMS_SCHEDULER.create_schedule (
schedule_name => 'By_Days_Of_Weak_Schedule',
start_date => SYSTIMESTAMP,
repeat_interval => 'freq=weekly; BYDAY=MON,TUE,WED');
END;
//Schedule created
create or replace
PROCEDURE set_intervals_procedure (
to_task_id in number,
repetitions_count in number)
AS
interval_string VARCHAR2(255);
start_d TIMESTAMP WITH TIME ZONE;
return_date_after TIMESTAMP WITH TIME ZONE;
next_run_date TIMESTAMP WITH TIME ZONE;
BEGIN
Select START_DATE Into start_d From DBA_SCHEDULER_SCHEDULES
WHERE SCHEDULE_NAME = 'BY_DAYS_OF_WEAK_SCHEDULE';
Select REPEAT_INTERVAL Into interval_string From DBA_SCHEDULER_SCHEDULES
WHERE SCHEDULE_NAME = 'BY_DAYS_OF_WEAK_SCHEDULE';
return_date_after := start_d;
FOR i IN 1..repetitions_count LOOP
DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING(
interval_string,
start_d, return_date_after, next_run_date);
return_date_after := next_run_date;
END LOOP;
END set_intervals_procedure;
问题是它无法编译。它忽略我的Select语句,尽管它们是正确的。有人能告诉我哪里错了吗。
谢谢您是否有DBA_计划程序_计划的select权限?编译时会出现什么错误?(
显示错误
,或从用户错误中选择*
)。根据@schurik的评论,如果您确实拥有select权限,它是直接授予您还是通过角色授予?它是通过角色授予的,因为与其他代码不同,这些select语句工作正常,通常我可以从我的计划中获取信息。我有以下错误:错误(11,16):PL/SQL:SQL语句忽略错误(11,52):PL/SQL:ORA-00942:表或视图不存在错误(14,16):PL/SQL:SQL语句忽略错误(14,65):PL/SQL:ORA-00942:表或视图不存在必须直接授予,或者使用AUTHID CURRENT_USER@Dima-您需要将dba\u调度程序上的select计划授予dima,而不是授予您的特定计划。或者看看是否可以使用user\u scheduler\u schedules
,这可能更合适。