问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle中,存储过程的参数都有哪些类型?

发布网友 发布时间:2022-04-20 01:36

我来回答

1个回答

热心网友 时间:2023-05-20 02:52

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';
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求一些形容girl的字。如,纯,娇,靓,白,美,嫩,乖,萌,软,甜,绵_百度... 两人相差18岁,9年前演母子,9年后演姐弟,她堪称“不老女神 姓饶取什么名字好 饶姓取名字大全女宝宝 nsus笔记本电脑的security界面的set master password不小心改动了怎么办... 左游游戏厅为什么没有p1 北通手游P1游戏手柄王者荣耀连接教程 佛影峡漂流门票包含哪些娱乐项目 佛影峡漂流一日游攻略 重庆巴南佛影峡漂流全程多长 佛影峡漂流门票-攻略 重庆佛影峡漂流门票多少钱 珠海跟团一日游 简答:存储过程的类型以及什么情况下使用什么存储... mysql存储过程参数数据类型有什么规范 sql server存储过程的参数有哪些类型 存储过程:带参数类型有哪些? 最好用的身体乳排行榜?请问? 身体乳哪个牌子好?求推荐? 便宜好用的男士身体乳有哪些?可以推荐几款吗? 孕妇和敏感肌都适合的身体乳有哪些?求推荐? 怎么用日本松山油脂/matsuyama柚子 精华无添加保湿... 身体乳有哪些分类 它们分别有什么效果? 有没有好用的保湿身体乳推荐呀? 哪款身体乳比较滋润啊? 学生党,求推荐好用的身体乳!谢谢! 有哪些好用的身体乳可以推荐? 准备开始涂身体乳,哪个牌子的身体乳比较润? 保湿效果好的身体乳推荐 身体乳排名 好用的身体乳有哪些? 小仙女们,好用的保湿润肤身体乳,求安利,求推荐 冬天的话,身体乳哪个牌子好用一点? c# 获取存储过程参数名和类型 sqlserver2008存储过程的参数有数组类型吗 Oracle存储过程及举例(几种参数情况的存储 Oracle存储过程中 in out参数类型怎么定义? 数据库原理-存储过程的类型有哪些?分别有什么特征... 存储过程参数输入和输出参数有什么作用 mysql 的存储过程 数据类型 在SQL中存储过程分为哪五类 oracle存储过程自定义类型参数的传参问题 .NET(急) sqlserver存储过程返回out参数类型 DB2中建立存储过程的详细参数和语法 存储过程参数的传递 如何用SQL语句查询出指定的存储过程的参数及其类型 微信头像旁这2个图标表示什么意思呢 怎么送女生礼物 给喜欢的女生送什么礼物比较好? 送女生什么礼物好呢? 送什么东西给女生 送什么礼给女生 想送礼物给女生,通常女生喜欢什么礼物?