oracle存储过程is和as
1. oracle存储过程中的关键字is、as究竟有什么区别呀
1、单独的FUNCTION, PROCEDURE 习惯用AS,PACKAGE 中的FUNCTION, PROCEDURE 用IS
2、
create [or replace] procere <过程名>
(
<参数1> [方式1] <数据类型1>,
<参数2> [方式2] <数据类型2>
)
is|as
PS/sql过程体;
单独的这么看is as 也没区别
2. oracle 存储过程 as 和is 区别
第一个问题:is和as是可以互用的,用哪个都没关系的
第二个问题:在外面
第三个问题:过程中没有declare关键字,declare用在语句块中
第四个问题:估计你看到的是做游标定义的东东,抑或者直接就一句sql。
3. Oracle存储过程的语法分析
ORREPLACE是一个可选的关键字,建议用户使用此关键字。如果过程已经存在,该关键字将重新创建过程,这样就不必删除和重新创建过程。关键字IS和AS均可,它们本身没有区别。IS后面是一个完整的PL/SQL块,可以定义局部变量,但不能以DECLARE开始。局部变量在过程内部存放值。形式参数可以有三种模式:IN、OUT、INOUT。如果没有为形式参数指定模式,那么默认的模式是IN。IN表示输入参数OUT表示输出参数
HelloWorld!创建第一个存储过程HelloWorldSQL>_output.put_line('helloworld');end;注:需要在存储过程输入完成后回车,下一行输入”/”回车,才会创建成功。当提示Procerecreated表示存储过程创建成功。调用HelloWorld!执行SQL>setserveroutputon;SQL>exec[ute]helloworld;显示如下结果helloworldPL/
4. oracle存储过程
创建存储过程
createprocerep_getday
(v_yearvarchar2,
v_monthvarchar2)
as
v_datevarchar2(10);
cursorcur_dateis
withtas
(selectrownum-1rnfromalconnectbyrownum<=32)
selectto_char(to_date(v_year||v_month,'yyyymm')+rn,'yyyy-mm-dd')fromtwhereto_char(to_date(v_year||v_month,'yyyymm')+rn,'yyyymm')=v_year||v_month;
begin
opencur_date;
loop
fetchcur_dateintov_date;
exitwhencur_date%notfound;
dbms_output.put_line(v_date);
endloop;
end;
执行
begin
p_getday('2012','11');
end;
结果
5. ORACLE中如何为存储过程传递参数
第一种:只读。参数是只读的,不能修改,即调用时传递进来的是常量,或者变量(但变量不能在存储过程中修改)。通常select及DML类型的存储过程传递的是in类型的参数。
第二种:只写。忽略调用语句传递的任何参数,并在函数(过程)内部给这些参数赋值,因此是只写的。(这种情况是在函数或过程内部给参数重新赋值,但重新赋值后的参数是无法被外部调用的(好像游标类型的参数除外))
CREATE OR REPLACE PROCEDURE "SCOTT"."SWAP" (firstValue out
number, secondValue out number) is
temp number;
begin
temp := firstValue;
firstValue := secondValue;
secondValue := temp;
end swap;
外部调用:
set serveroutput on;
declare
firstVal number;
secondVal number;
begin
firstVal := 10;
secondVal := 20;
scott.swap(firstVal,secondVal);
dbms_output.put_line('first is ' || firstVal);
dbms_output.put_line('second is ' || secondVal);
end;
无法在外部访问到firstValue与secondValue的值。此时打印出的结果为:
first is
second is
第三种:读或写。这可以完全控制参数,读取传递的参数的值。可以再函数(过程)内部修改参数的值,在退出函数(过程)后,这些参数被赋给在函数内部写入的值,这样就可以返回多个值。(即入口参数写入值后,可以传递到函数(过程)的外部,供外部调用的时候使用)
ps:函数中的返回值为如下几种:
char; varchar2; number; integer; date; boolean; table; record
SQL> CREATE OR REPLACE PROCEDURE HelloWorld2 (
2 p_user_name IN VARCHAR2,
3 p_out_val OUT VARCHAR2,
4 p_inout_val IN OUT VARCHAR2
5 ) AS
6 BEGIN
7 dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!');
8 p_out_val := 'A';
9 p_inout_val := 'B';
10 END HelloWorld2;
11 /
Procere created.
SQL> DECLARE
2 p_outval VARCHAR2(10);
3 p_inoutval VARCHAR2(10) := '~Hi~';
4 BEGIN
5 HelloWorld2('Edward', p_outval, p_inoutval);
6
7 dbms_output.put_line('p_outval=' || p_outval);
8 dbms_output.put_line('p_inoutval=' || p_inoutval);
9 END;
10 /
Hello Edward~Hi~!
p_outval=A
p_inoutval=B
PL/SQL procere successfully completed.
6. 请教各位:Oracle中,存储过程里as 什么意思 还是取别名吗那么NULL AS PER_ABE 是什么意思
不知道您全部的语句是什么,如果单看这个,那么就是一个固定值的列,这个固定值就是空(NULL),这个列的别名是PER_ABE
例如:SELECT NULL AS NULLCOLUMN FROM DUAL,其实就是选了一个定值,而这个定值是空。AS后边是把这个定值指定一个列名。
7. oracle存储过程到底是is还是as啊
没什么区别,一样的,都可以用~~
8. oracle存储过程如何输出信息
可用DBMS_OUTPUT.PUT_LINE()对存储过程的进行输出。
编写存储过程:
create or replace procere test_pro(in_num number)
as
M number;
begin
M := in_num;
if 0 < M then
dbms_output.put_line('输出SQL语句1');
elsif M < 3 then
dbms_output.put_line('输出SQL语句2');
else
dbms_output.put_line('nothing');
end if;
end;
(8)oracle存储过程is和as扩展阅读;
存储在数据库的数据字典中,存储在当前的应用中安全性由数据库提供安全保证,必须通过授权才能使用存储子程序,安全性靠应用程序来保证,如果能执行应用程序,就能执行该子程序。模式描述IN参数用来从调用环境中向存储过程传递值,不能给IN参数赋值,给此参数传递的值可以是常量、有值的变量、表达式等。
9. 创建存储过程is和as有什么区别
is 用来判断类型 如: if(val is String){.....}
as 作为/当做 的意思吧,我叙述不清,给你个例子吧:
function xx(e:Event):void{
var ss:Loader = e.target as Loader; // 让SS共享调用XX事件的对象的信息;
..}
10. oracle的存储过程is和as什么区别
使用过vba吗??
存储过程里的procere 相当于 sub 无返回值
存储过程里的function 相当于 Function 必须有回值