请问几个oracle存储过程语法的问题

包体里面procudure aaa() is还是as啊,难道是随便吗,
还有啊declare定义变量是在begin里面还是外面啊,有何区别啊,还有变量
是直接在is后面定义的,没有通过declare定义是什么意思啊,
还有我还看到有的dml没有在begin end语句块里面也可以的,谢谢
书上好像介绍的都不详细
最新回答
北音执念

2024-06-25 00:53:19

1、包中用is和as是同等的,因为在SQL中只能用AS,而在PL/SQL中可以用is,因兼容问题,所以PL/SQL中也可以使用AS;
2、放在begin外面,值得注意的是PL/SQL是块状结构,所以变量都应该的申明部分定义,也就是begin外面;
3、在函数、过程、包的申明部分定义变量时,可以不用Declare,但使用匿名程序时,一定要使用Declare定义变量;
4、纯SQL语句是不用begin/end的。只有PL/SQL语句才使用。
下一站↘婞諨

2024-06-25 00:40:16

1 随便 一般用is
2 在begin外面
declare
v_sql varchar2(200)
begin
...
end;
/
3 在存储过程中 变量是直接在is后面定义
而在程序块中,变量时在declare后定义上(如上,declare就相当于is)
4 你所看到的dml语句是在一个sql脚本中,所以不用放在begin end里面。

从你的提问来看 你还没明白存储过程和程序块的概念。
存储过程:
create or replace procedure test(
p_date date,
p_num number
) is
v_date date;
v_num number;
begin
....
end procedure test;
\

程序块:
declare
v_date date;
v_num number;
begin
....
end;
/

其中的declare就相当于is
如果这个程序块中不需要变量,你可以直接:
begin
....
end;
/
短笛

2024-06-25 00:58:11

第一个问题:is和as是可以互用的,用哪个都没关系的
第二个问题:在外面
第三个问题:过程中没有declare关键字,declare用在语句块中
第四个问题:估计你看到的是做游标定义的东东,抑或者直接就一句sql。