oracle数据库job怎么调用含参数的存储过程?

具体代码如下:
--建表
create table test_job(name varchar2);
commit;

-建立存储过程

create or replace procedure test_jobproce
(
name In varchar2
)as

begin

insert into test_job values(name);

end test_jobproce;

--建立job
--建立job后默认是执行的

declare test_job_really number;
begin
dbms_job.submit(test_job_really,'test_jobproce("zhangsan");',sysdate,'sysdate+1/1440');
commit;
end;

这里建立job时就报错,具体内容如下(这里不要看具体的表名和列名,因为保密原则我把表明和具体的列改为一个简单的例子,但是数据类型和格式都一样,希望大神分析原因):
第 1 行出现错误:
ORA-06550: line 1, column 116:
PLS-00201: identifier 'zhangsan' must be declared
ORA-06550: line 1, column 93:
PL/SQL: Statement ignored
ORA-06512: at "SYS.DBMS_JOB", line 82
ORA-06512: at "SYS.DBMS_JOB", line 139
ORA-06512: at line 4

---查询job

select job ,what from dba_jobs;
--假设job的id为25
--启动job
begin
dbms_job.run(25);
commit;
end;

这段程序,在创建job时就出错了。
哪位大神能给一个成功的Oracle数据库job调用带参数的存储过程的例子?谢谢了。

dbms_job.submit(test_job_really,'test_jobproce("zhangsan");',sysdate,'sysdate+1/1440');

改为:
dbms_job.submit(test_job_really,'test_jobproce(''zhangsan'');',sysdate,'sysdate+1/1440');

注意:zhangsan的两边,不是双引号,是两个单引号!

如有帮助,请采纳!
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-06
sql里的引号全部是单引号
第2个回答  2014-03-06
请问你的代码呢?

oracle中怎么执行带有输出参数的存储过程,在程序中我知道怎么调用,
1、新建一个存储过程(Procedure)。2、修改存储过程,这个存储过程有一个输入参数(pid)跟一个输出参数(name),即通过用户id查询用户名称并将名称返回。3、调试存储过程,找到刚刚创建的存储过程右击并点击【test】选项。4、在打开的窗口内修改id值并点击左上角的倒三角形图标开始调试。5、按【CTRL+N】...

oracle 中用什么命令执行一个带参数的存储过程
1、第一步,创建一个新的存储过程,见下图,转到下面的步骤。2、第二步,完成上述步骤后,修改存储过程。 此存储过程具有一个输入参数(pid)和一个输出参数,即通过用户id查询用户名并返回名称,见下图,转到下面的步骤。3、第三步,完成上述步骤后,调试存储过程,找到新创建的存储过程,右键单击[t...

如何用命令来运行Oracle带参数的存储过程
1. call procedure_name(parameter01,parameter02);2. exec procedure_name(parameter01,parameter02);3. begin procedure_name(parameter01,parameter02);end;

ORACLE 中user_jobs调用 存储过程
在里边执行下边的,把下边这些放到job里:DECLARE on_flag NUMBER;out_reason VARCHAR2(4000);BEGIN -- Now call the stored program sp_create_table(on_flag,out_reason);-- Output the results :a0 := on_flag;:a1 := out_reason;EXCEPTION WHEN OTHERS THEN dbms_output.put_line(SubStr('...

Oracle执行\/调用存储过程
使用EXECUTE命令进行执行相对简单,只需在命令后面输入存储过程名称即可。让我们通过一个示例进行说明。实例:执行pro_insertDetp存储过程 首先,创建一个存储过程,用于向dept表中插入一条记录,代码如下:执行此命令:EXECUTE pro_insertDept;可以在PL\/SQL程序块中调用存储过程。例如,使用以下步骤:设置服务...

关于Oracle job调用存储过程
你的这个job不对,应该是下面这样。declare job1 number;begin dbms_job.submit(job1,'insertSysdate;',sysdate,'sysdate+1\/1440');COMMIT;end;\/

oracle存储过程中调用带返回参数的存储过程
1、return返回值类型:declare v_return_value number;v_return_value := spname();dbms_output.putline(v_return_value);2、out返回 declare v_return_value number;spname(:v_return_value);dbms_output.putline(v_return_value);

oracle中,一个存储过程怎么调用另一个存储过程?这两个存储过程都带有...
原则就是:你要调用哪个存储过程,就要为该存储过程传入它需要的参数 它定义的几个,你就传入几个 当然参数的类型要对应上。还有就是如果一个存储过程中定义了out类型的参数,当你在调用它的时候,这个out类型的参数也要参入,看它定义的是什么类型的out参数。然后定义一个该类型的变量,传入进去,用于...

oracle job 执行带参数的存储过程;每天定时将A表新产生的数据定期更新...
execute P_JBXX_NSZHDJXXB_NEW(TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss'))

怎样实现每天自动执行oracle的存储过程一次?
用joboracle定时器调用存储过程 1、创建一个表,为了能清楚看到定时器的运行情况我们创建一个带有日期字段的表Sql代码 create table job_table(run_time date); create table job_table(run_time date);2、创建存储过程Sql代码 create or replace procedure job_proc is begininsert into job_...

相似回答