Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 从存储过程中的Select语句设置变量值_Oracle_Variables_Select_Stored Procedures_Plsql - Fatal编程技术网

Oracle 从存储过程中的Select语句设置变量值

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

我对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 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
,这可能更合适。