2013-05-14 2 views
1

У меня есть программа планировщика, которая запускает процедуру хранения, которая требует входного параметра.Как передать параметр, необходимый процедуре, выполняемой через программу планировщика

BEGIN 
    DBMS_SCHEDULER.DROP_PROGRAM 
    (program_name   => 'MYSCHEMA.EXPORT_SCHEMA_STARTING'); 
END; 
/
BEGIN 
    SYS.DBMS_SCHEDULER.CREATE_PROGRAM 
    (
     program_name   => 'MYSCHEMA.EXPORT_SCHEMA_STARTING' 
    ,program_type   => 'STORED_PROCEDURE' 
    ,program_action  => 'MYSCHEMA.EXPORT_STATUS' 
    ,number_of_arguments => 0 
    ,enabled    => FALSE 
    ,comments    => NULL 
    ); 

    SYS.DBMS_SCHEDULER.ENABLE 
    (name     => 'MYSCHEMA.EXPORT_SCHEMA_STARTING'); 
END; 
/

я удивляюсь, как я могу передать параметр в процедуру EXPORT_STATUS

ответ

0

я изменил его в программу, которые работают PLSQL BLOCK до сих пор

BEGIN 
    SYS.DBMS_SCHEDULER.CREATE_PROGRAM 
    (
     program_name   => 'MYSCHEMA.EXPORT_SCHEMA_STARTING' 
    ,program_type   => 'PLSQL_BLOCK' 
    ,program_action  => 'MYSCHEMA.EXPORT_STATUS(''STARTING''); END;' 
    ,number_of_arguments => 0 
    ,enabled    => FALSE 
    ,comments    => NULL 
    ); 

    SYS.DBMS_SCHEDULER.ENABLE 
    (name     => 'MYSCHEMA.EXPORT_SCHEMA_STARTING'); 
END; 
/

это работает, как я ожидал. но если кто-то знает, как сохранить его в предыдущем формате, будет оценен.

1

Вы должны быть в состоянии передать параметры с помощью DEFINE_PROGRAM_ARGUMENT

BEGIN 

    DBMS_SCHEDULER.CREATE_PROGRAM(
     program_name   => 'MYSCHEMA.EXPORT_SCHEMA_STARTING' 
    ,program_type   => 'STORED_PROCEDURE' 
    ,program_action  => 'MYSCHEMA.EXPORT_STATUS' 
    ,number_of_arguments => 1 
    ,enabled    => FALSE 
    ,comments    => NULL 
    ); 

DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT (
    program_name   => 'MYSCHEMA.EXPORT_SCHEMA_STARTING', 
    argument_position  => 1, 
    argument_name   => 'STATUS', 
    argument_type   => 'VARCHAR2', 
    default_value   => 'STARTING'); 

    DBMS_SCHEDULER.ENABLE 
    (name     => 'MYSCHEMA.EXPORT_SCHEMA_STARTING'); 
END; 
+0

это так. Я искал что-то подобное. я попробую @sathya. Спасибо –

Смежные вопросы