oracle存储过程默认参数
⑴ oracle 存储过程为什么要有参数啊
http://hi..com/wangqing999/blog/item/0991d3124070854420a4e9b4.html
Oracle 存储过程 的例子代码.
关于 参数 IN/OUT 参数默认值 指定特定参数的情况 , 都有相应的例子。
⑵ oracle 存储过程 参数
在过程头中再定义一个out参数,在代码exception的部分将输出赋给这个out参数即可
⑶ oracle带输入参数的存储过程
sql">createorreplaceproceresp_test(iv_yinvarchar2,iv_minvarchar2)
as
v_countinteger;
begin
selectcount(*)intov_countfromtable_testwhereyear=iv_yandmonth=iv_m;
ifv_count>0then
Raise_Application_Error(-20001,'数据已存在!');
else
insertintotable_testvalues(iv_y,iv_m);
commit;
endif;
end;
⑷ 存储过程输入参数设置默认值问题
问题补充:如果例中,动作=“入库” ; 日期 的默认值应该设置多少? 你在存储过程里,给这个参数一个默认值就ok了。 这里应该有三个参数吧,
⑸ oracle 存储过程怎么参数
帮你修了一下,updatesql没看,字段类型也不知道,你可能细微处要修一下,并且注意下面几项;prcere中,select要注意into赋值,就是我给你加得p_1,p_2,p_3,p_4,p_5你自己注意一下数据类型,select出来的东西是不能直接用的,要先赋值
⑹ ORACLE存储过程带默认值的参数怎么处理
CREATE OR REPLACE PROCEDURE SELECTEMP(P_EMPNO IN NUMBER DEFAULT 7369) AS
V_ENAME EMP.ENAME%TYPE;
BEGIN
SELECT E.ENAME INTO V_ENAME FROM EMP E WHERE E.EMPNO=P_EMPNO;
DBMS_OUTPUT.put_line(V_ENAME);
END SELECTEMP;
BEGIN
SELECTEMP(7499);
END;
BEGIN
SELECTEMP();--默认参数值
END;
⑺ oracle 存储过程参数的问题
方案1:
(1)传入前将单位拼接为串,格式如下:‘单位1,单位2,单位3',即'43,4301',用逗号分割数据。
(2)查询条件修改如下:
where instr(传入的串,单位所在列)>0;
(3)注意 单位这个列不能有空的情况,否则需要加上nvl(单位,‘@’),字符可以自拟;
方案2:传入前将复选后的单位放入PL/SQL表,再将PL/SQL表作为参数进行传递;
如果复选的不是很大,没有超过varchar2(4000)的话,方案1能实现。注意对参数最好加限制substrb(单位串,1,你期望的限制),这个限制可依据性能而定,一般复选框也不会一页显式太多,所以不必担心串的大小。
⑻ sql存储过程参数可省略吗 存储过程中参数都有默认值,调用时可不可以不传参数呢
可以,默认参数放存储过程后面,等调用的时候,默认参数不填就可以直接运行了
⑼ Oracle存储过程及举例(几种参数情况的存储
create table TESTTABLE
(
id1 VARCHAR2(12),
name VARCHAR2(32)
)
select t.id1,t.name from TESTTABLE t
insert into TESTTABLE (ID1, NAME)
values ('1', 'zhangsan');
insert into TESTTABLE (ID1, NAME)
values ('2', 'lisi');
insert into TESTTABLE (ID1, NAME)
values ('3', 'wangwu');
insert into TESTTABLE (ID1, NAME)
values ('4', 'xiaoliu');
insert into TESTTABLE (ID1, NAME)
values ('5', 'laowu');
---创建存储过程
create or replace procere test_count
as
v_total number(1);
begin
select count(*) into v_total from TESTTABLE;
DBMS_OUTPUT.put_line('总人数:'||v_total);
end;
--准备
--线对scott解锁:alter user scott account unlock;
--应为存储过程是在scott用户下。还要给scott赋予密码
---alter user scott identified by tiger;
---去命令下执行
EXECUTE test_count;
----在ql/spl中的sql中执行
begin
-- Call the procere
test_count;
end;
create or replace procere TEST_LIST
AS
---是用游标
CURSOR test_cursor IS select t.id1,t.name from TESTTABLE t;
begin
for Test_record IN test_cursor loop---遍历游标,在打印出来
DBMS_OUTPUT.put_line(Test_record.id1||Test_record.name);
END LOOP;
test_count;--同时执行另外一个存储过程(TEST_LIST中包含存储过程test_count)
end;
-----执行存储过程TEST_LIST
begin
TEST_LIST;
END;
---存储过程的参数
---IN 定义一个输入参数变量,用于传递参数给存储过程
--OUT 定义一个输出参数变量,用于从存储过程获取数据
---IN OUT 定义一个输入、输出参数变量,兼有以上两者的功能
--这三种参数只能说明类型,不需要说明具体长度 比如 varchar2(12),defaul 可以不写,但是作为一个程序员最好还是写上。
---创建有参数的存储过程
create or replace procere test_param(p_id1 in VARCHAR2 default '0')
as v_name varchar2(32);
begin
select t.name into v_name from TESTTABLE t where t.id1=p_id1;
DBMS_OUTPUT.put_line('name:'||v_name);
end;
----执行存储过程
begin
test_param('1');
end;
default '0'
---创建有参数的存储过程
create or replace procere test_paramout(v_name OUT VARCHAR2 )
as
begin
select name into v_name from TESTTABLE where id1='1';
DBMS_OUTPUT.put_line('name:'||v_name);
end;
----执行存储过程
DECLARE
v_name VARCHAR2(32);
BEGIN
test_paramout(v_name);
DBMS_OUTPUT.PUT_LINE('name:'||v_name);
END;
-------IN OUT
---创建存储过程
create or replace procere test_paramINOUT(p_phonenumber in out varchar2)
as
begin
p_phonenumber:='0571-'||p_phonenumber;
end;
----
DECLARE
p_phonenumber VARCHAR2(32);
BEGIN
p_phonenumber:='26731092';
test_paramINOUT(p_phonenumber);
DBMS_OUTPUT.PUT_LINE('新的电话号码:'||p_phonenumber);
END;
-----sql命令下,查询当前用户的存储过程或函数的源代码,
-----可以通过对USER_SOURCE数据字典视图的查询得到。USER_SOURCE的结构如下:
SQL> DESCRIBE USER_SOURCE ;
Name Type Nullable Default Comments
---- -------------- -------- -------
-------------------------------------------------------------------------------------------------------------
NAME VARCHAR2(30) Y Name of the object
TYPE VARCHAR2(12) Y Type of the object: "TYPE", "TYPE BODY", "PROCEDURE", "FUNCTION",
"PACKAGE", "PACKAGE BODY" or "JAVA SOURCE"
LINE NUMBER Y Line number of this line of
source
TEXT VARCHAR2(4000) Y Source text
SQL>
---查询出存储过程的定义语句
select text from user_source WHERE NAME='TEST_COUNT';
----查询存储过程test_paramINOUT的参数
SQL> DESCRIBE test_paramINOUT;
Parameter Type Mode Default?
------------- -------- ------ --------
P_PHONENUMBER VARCHAR2 IN OUT
SQL>
---查看当前的存储过程的状态是否正确,
---VALID为正确,INVALID表示存储过程无效或需要重新编译
SELECT STATUS FROM USER_OBJECTS WHERE OBJECT_NAME='TEST_COUNT';
-----如果要检查存储过程或函数的依赖性,可以通过查询数据字典USER_DENPENDENCIES来确定,该表结构如下:
SQL> DESCRIBE USER_DEPENDENCIES;
Name Type Nullable Default Comments
-------------------- ------------- -------- ------- ----------------------------------------------------------
NAME VARCHAR2(30) Name of the object
TYPE VARCHAR2(17) Y Type of the object
REFERENCED_OWNER VARCHAR2(30) Y Owner of referenced object (remote owner if remote object)
REFERENCED_NAME VARCHAR2(64) Y Name of referenced object
REFERENCED_TYPE VARCHAR2(17) Y Type of referenced object
REFERENCED_LINK_NAME VARCHAR2(128) Y Name of dblink if this is a remote object
SCHEMAID NUMBER Y
DEPENDENCY_TYPE VARCHAR2(4) Y
SQL>
---查询存储过程TEST_COUNT的依赖关系
SELECT REFERENCED_NAME,REFERENCED_TYPE FROM USER_DEPENDENCIES WHERE NAME='TEST_COUNT';