存储过程笔记——参数、变量篇

存储过程参数、变量

1,变量,

**变量:**普通变量、引用型变量、记录型变量。
1普通变量,直接声明使用。
2引用型变量,为确保声明变量类型与取值来源字段,不会发生类型不匹配情况,声明时,将类型与取值来源字段保持一致。
如声明变量v_age用于接受年龄信息,此时不确定,数据来源表中的age字段是字符串类型还是数值类型,定义时,就可声明v_age与表中age字段类型一致。
3记录型变量,可获取表中某一行数据的全部字段信息,较引用型变量节省了单个字段的声明过程。
声明变量的方式:
变量名 变量类型(变量长度) 例:v_name varchar(2);
变量赋值:
1,直接赋值。如 v_name := ‘张三’;
2,语句赋值。如select … into …变量名

2,参数

参数:指存储过程在创建时声明的变量,作用是存储过程调用前的输入,和运行后的输出。

3,示例

存储过程创建:
(后附相关代码)
在这里插入图片描述
调用:
在这里插入图片描述
运行结果:
在这里插入图片描述
create or replace procedure test_var(v_name_in in test_01.name%type,v_age_out out test_01.age%type) as
–1.1存储过程创建时可选输入、输出参数。此处输入是v_name_in,输出是v_age_out
– Local variables here
–2此处也可以定义参数
v_age integer;–3.1普通变量,可为char,varchar,date,number,boolean,integer…
v_name varchar(20) := ‘张三’;–3.11普通型变量,定义变量,并直接赋值
v_name2 test_01.name%TYPE:=‘李四’;–3.2引用型变量,定义变量,并直接赋值,适用于不确定字段类型时,直接与取值字段类型保持一致
存储过程代码:

  v_age2 test_01.age%TYPE;
  v_line test_01%ROWTYPE;--3.3记录型变量 用于获取表数据整行数据信息
  --v_name:='张三';
begin
  -- Test statements here
  select age into v_age 
  from test_01 where name = v_name;--3.12变量赋值方式2:select  .... into var from table;
  select age into v_age2 
  from test_01 where name = v_name2;
  
  select * into v_line from test_01 where name = '张三';
  select age into v_age_out from test_01 where name = v_name_in;--1.2根据输入的参数,为输出参数赋值
  --打印
  DBMS_OUTPUT.put_line(v_name||'年龄:'||v_age);
         --输出操作,调用存储过程,实际输出参数,只有v_age_out,其余为存储过程内部打印
  DBMS_OUTPUT.put_line(v_name2||'年龄:'||v_age2);
  DBMS_OUTPUT.put_line('记录型变量打印:'||v_line.name||','||v_line.age);
  dbms_output.put_line('存储过程的输入输出练习:'||'其中输入是'||v_name_in||','||'其中输出是'||v_age_out);

end test_var;
/

调用代码:

-- Created on 2024/1/7 by LCLDeer 
declare 
  -- Local variables here
v_age_out2  test_01.age%type;--定义参数,用于获取输出参数。调用时,存储过程内部定义、调用的参数不用关注,只关注存储过程的输入、输出参数即可
v_name_in2 test_01.name%type := '张三';--定义参数,用于指定输入参数。
begin
  -- Test statements here
  test_var( v_name_in2,v_age_out2);--调用存储过程,指定输入、输出参数
  dbms_output.put_line('打印存储过程的参数:'||v_age_out2);
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值