oracleplsql调用存储过程
A. oracle调用存储过程,call和exec有什么区别
oracle 中调用存储过程可以用exec,或begin……end,但无法使用call。
但exec只可以在命令行下执行,如sqlplus下或plsql的命令窗口下执行,但begin……end可以用第三方工具或命令行下执行。
如图:
命令下执行:
B. PL_sql如何执行oracle存储过程
要成功执行这个存储过程,你需要注意几点:
1.select * from ods_area; 不能直接在pl/sql 中作为语句执行。
应该用 select 字段 into plsql变量 from 表名;
的形式来获取表中的数据,保存到plsql变量中。
2. 存储过程的语法格式为:
create or replace procere area
is
--变量声明;
begin
--过程主体;
end area;
3. 如果存储过程代码无误,可以通过 "/" 来执行代码,编译存储过程。
4.通过exec 或 execute 来调用编译后的存储过程。
例如:
-- 创建procere:
create or replace procere area
is
num number ;
v_areaRecord al%ROWTYPE;
begin
--例子1
select * into v_areaRecord from al;
--例子2
select 12345 into num from al;
end area;
/
-- 通过 / 执行;
--调用
exec area;
C. 怎么用ORACLE PLSQL匿名块调用存储过程
begin
core_acct_compare(参数1,参数2,参数3,参数4);
end;
begin ... end; 就是所谓的匿名块
D. pl/sql调用存储过程不成功,求解决(oracle 10)
你的存储过程就有问题吧。我的数据库也是Oracle 10的,创建过程时报错,select中没有into子语。过程改好的话,调用是可以的。第一种的时候加括号 CALL procere_test()
E. oracle如何在sql执行带参存储过程语句
你的倒数2个参数: rtncode 、rtnmess都是out类型的参数,都需要带回值来的。
out类型的参数,用常量进行调用,当然出错了。
这样试试:
declare
vcodeint;
vmessvarchar2(200);
begin
p_yjqr_mz_new('1','2','3',to_date('2014-08-01','yyyy-mm-dd'),'5',6,vcode,vmess);
dbms_output.put_line(vcode);
dbms_output.put_line(vmess);
end;
F. Oracle数据库job,调用存储过程,PLSQL工具执行后,没有报错,但是也没有任何效果,哪位大神帮忙分析一下
SQL> create or replace procere test_jobproce as
2
3 begin
4
5 insert into test_job values(sysdate);
6
7 end test_jobproce;
8
9 /
警告: 创建的过程带有编译错误。
SQL> show errors;
PROCEDURE TEST_JOBPROCE 出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
5/1 PL/SQL: SQL Statement ignored
5/13 PL/SQL: ORA-00942: 表或视图不存在
SQL> create table test_job (t1 date);
表已创建。
SQL> create or replace procere test_jobproce as
2
3 begin
4
5 insert into test_job values(sysdate);
6
7 end test_jobproce;
8 /
过程已创建。
SQL> declare test_job_really number;
2 begin
3 dbms_job.submit(test_job_really,'test_jobproce;',sysdate,'sysdate+1/1440')
4 commit;
5 end;
6 /
PL/SQL 过程已成功完成。
SQL> rpitn :test_job_really;
SP2-0734: 未知的命令开头 "rpitn :tes..." - 忽略了剩余的行。
SQL> print :test_job_really;
SP2-0552: 未声明绑定变量 "TEST_JOB_REALLY"。
SQL> desc dba_jobs;
名称 是否为空? 类型
----------------------------------------- -------- ---------------------------
JOB NOT NULL NUMBER
LOG_USER NOT NULL VARCHAR2(30)
PRIV_USER NOT NULL VARCHAR2(30)
SCHEMA_USER NOT NULL VARCHAR2(30)
LAST_DATE DATE
LAST_SEC VARCHAR2(8)
THIS_DATE DATE
THIS_SEC VARCHAR2(8)
NEXT_DATE NOT NULL DATE
NEXT_SEC VARCHAR2(8)
TOTAL_TIME NUMBER
BROKEN VARCHAR2(1)
INTERVAL NOT NULL VARCHAR2(200)
FAILURES NUMBER
WHAT VARCHAR2(4000)
NLS_ENV VARCHAR2(4000)
MISC_ENV RAW(32)
INSTANCE NUMBER
SQL> select job ,what from dba_jobs;
JOB
----------
WHAT
-------------------------------------------------------------------------------
4001
wwv_flow_cache.purge_sessions(p_purge_sess_older_then_hrs => 24);
4002
wwv_flow_mail.push_queue(wwv_flow_platform.get_preference('SMTP_HOST_ADDRESS'),
wv_flow_platform.get_preference('SMTP_HOST_PORT'));
3
test_jobproce;
JOB
----------
WHAT
-------------------------------------------------------------------------------
SQL> exec dbms_job.run(3);
PL/SQL 过程已成功完成。
SQL> select * from test_job
2 ;
T1
--------------
05-3月 -14
05-3月 -14
SQL> /
T1
--------------
05-3月 -14
05-3月 -14
SQL> /
T1
--------------
05-3月 -14
05-3月 -14
SQL> /
T1
--------------
05-3月 -14
05-3月 -14
SQL> exec dbms_job.run(3);
PL/SQL 过程已成功完成。
SQL> /
T1
--------------
05-3月 -14
05-3月 -14
05-3月 -14
SQL> /
T1
--------------
05-3月 -14
05-3月 -14
05-3月 -14
SQL> exec dbms_job.run(3);
PL/SQL 过程已成功完成。
SQL> /
T1
--------------
05-3月 -14
05-3月 -14
05-3月 -14
05-3月 -14
SQL>