PL/SQL编程—变量

SQL> declare
  2  c_tax_rate number(3,2):=0.03;
  3  v_name varchar2(20);
  4  v_passwd varchar2(20);
  5  v_sale number(7,2);
  6  v_tax_sale number(7,2);
  7  begin
  8  select name,passwd,salary into v_name,v_passwd,v_sale from mytest where id=&inpt;
  9  v_tax_sale:=v_sale*c_tax_rate;
 10  dbms_output.put_line(‘name:‘||v_name||‘ passwd:‘||v_passwd||‘ taxsale:‘||v_tax_sale);
 11  end;
 12  /

name:123 passwd:123 taxsale:3

PL/SQL procedure successfully completed

在声明变量的时候可以设置类型为动态的取表中的字段的类型一致

SQL> insert into mytest values(‘4‘,‘125555‘,‘passwd‘,‘50‘);

1 row inserted

SQL> select * from mytest;

ID    NAME                 PASSWD                                                                                         SALARY
----- -------------------- -------------------- --------------------------------------------------------------------------------
1     123                  123                                                                                               100
2     gaodingle!!!!        123                                                                                               100
3     gagaga               123                                                                                               100
4     125555               passwd                                                                                             50

SQL>
SQL> declare
  2  c_tax_rate number(3,2):=0.03;
  3  v_name varchar2(4);
  4  v_passwd varchar2(20);
  5  v_sale number(7,2);
  6  v_tax_sale number(7,2);
  7  begin
  8  select name,passwd,salary into v_name,v_passwd,v_sale from mytest where id=&inpt;
  9  v_tax_sale:=v_sale*c_tax_rate;
 10  dbms_output.put_line(‘name:‘||v_name||‘ passwd:‘||v_passwd||‘ taxsale:‘||v_tax_sale);
 11  end;
 12  /

declare
c_tax_rate number(3,2):=0.03;
v_name varchar2(4);
v_passwd varchar2(20);
v_sale number(7,2);
v_tax_sale number(7,2);
begin
select name,passwd,salary into v_name,v_passwd,v_sale from mytest where id=4;
v_tax_sale:=v_sale*c_tax_rate;
dbms_output.put_line(‘name:‘||v_name||‘ passwd:‘||v_passwd||‘ taxsale:‘||v_tax_sale);
end;

ORA-06502: PL/SQL: 数字或值错误 :  字符串缓冲区太小
ORA-06512: 在 line 9

SQL>
SQL> declare
  2  c_tax_rate number(3,2):=0.03;
  3  v_name mytest.name%type;
  4  v_passwd varchar2(20);
  5  v_sale number(7,2);
  6  v_tax_sale number(7,2);
  7  begin
  8  select name,passwd,salary into v_name,v_passwd,v_sale from mytest where id=&inpt;
  9  v_tax_sale:=v_sale*c_tax_rate;
 10  dbms_output.put_line(‘name:‘||v_name||‘ passwd:‘||v_passwd||‘ taxsale:‘||v_tax_sale);
 11  end;
 12  /

name:125555 passwd:passwd taxsale:1.5

PL/SQL procedure successfully completed

SQL> declare
  2  --定义一个pl/sql记录类型叫做 test_record_type 可以理解为定义一个类,这个类型中包括了name,passwd,salary
  3  type test_record_type is record (name mytest.name%type,passwd mytest.passwd%type,salary_gaga mytest.salary%type);
  4  --定义一个变量这个变量是test_record_type类型 好比类new一个对象
  5  sp_record test_record_type;
  6  begin
  7  select name,passwd,salary into sp_record from mytest where id=&inpt;
  8  dbms_output.put_line(‘name:‘||sp_record.name||‘ salary:‘||sp_record.salary_gaga);
  9  end;
 10  /

name:123 salary:100

SQL> declare
  2  type sp_test_table is table of mytest.name%type index by binary_integer;
  3  test_table sp_test_table;
  4  begin
  5  select name into test_table(0) from mytest where id=&inpt;
  6  dbms_output.put_line(‘name:‘||test_table(0));
  7  end;
  8  /

name:gagaga

PL/SQL procedure successfully completed
时间: 2024-08-08 02:43:41

PL/SQL编程—变量的相关文章

PL/SQL——编程——变量定义

1.变量标量类型(scalar)复合类型(composite)参照类型(reference)lob(large object) --定义一个变长字符串v_ename VARCHAR2(10)--定义一个小数,范围-9999.99~9999.99v_sal NUMBER(6,2)--定义一个小数,并给初始值5.4,:=是plsql的赋值符v_sal2 NUMBER(6,2):=5.4--定义一个日期类型v_hiredate date--定义一个布尔量,不能为空,初始值为falsev_valid B

PL/SQL编程--变量声明及赋值

declare v_price number(10,2);--单价 v_usenum number;--水费字数 v_usenum2 number;--使用吨数 begin v_price:=2.45;--每吨单价 v_usenum := 10000000; v_usenum2 := round(v_usenum/1000,2); DBMS_OUTPUT.put_line('金额为:'||(v_price*v_usenum2)); end; 原文地址:https://www.cnblogs.co

PL/SQL 编程(一)基础,变量,分支,循环,异常

SQL和PL/SQL: SQL 结构化查询语言(Structural Query Language),是用来访问和操作关系型数据库的一种标准通用语言,属于第四代语言(4GL).可以方便的调用相应语句来去的结果,特点是非过程化,使用的时候不用指明执行的具体方法,不用关注实现的细节,但是某些情况下满足不了复杂业务流程的需求. PL/SQL是 Procedure Language & Structured Query Language 的缩写.属于第三代语言(3GL),是一种过程化语言.PL/SQL是

PL/SQL编程之变量

对于PL/SQL编程,准确的说oracle数据库存储过程这一部分,哎呀,当初学习的时候感觉老难了.其实很简单,就是多学几遍,学不会再学.慢慢的,就可以搞定了. 心得传授完毕,言归正传.下面来讲一下plsql变量相关的知识: 先来看一下下面这段代码: declare v_num number(20); begin dbms_output.put_line('请输出:'||v_num); end; / 你猜结果会怎样? 没错,没有结果.很简单,其中v_num即为变量,现在变量还没有赋值嘛! 再来看一

Oracle PL/SQL编程之变量

注: 以下测试案例所用的表均来自与scott方案,使用前,请确保该用户解锁. 1.简介 和大多数编程语言一样,在编写PL/SQL程序时,可以定义常量和变量,在pl/sql程序中包括有: a.标量类型(Scalar) b.复合类型(Composite) c.参照类型(Refrence) d.lob(large object)类型 下面来一一介绍 2.标量(Scalar)类型  ---常用类型 在编写pl/sql语句时,如果需要用到变量,那么就需要在定义部分定义变量.pl/sql中定义变量个常量的语

pl/sql编程基础

PL/SQL 1.过程.函数.触发器是pl/sql编写的 2.过程.函数.触发器是存放在oracle数据库中的 3.pl/sql是非常强大的过程化语言 4.过程.函数.触发器可以在java程序中调用 pl/sql编写能节省一点时间就是提高了性能(量大),java直接调用数据库存放的过程,解析时间就节省下来了,提高了性能 模块化的设计思想----->存储过程 网络传输(java程序中编写的sql语言),直接调用数据库的过程节省了传输量 提高安全性(存储过程避免了数据库信息的泄漏) 缺点: 移植性不

ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)

原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!)   继上篇:ORACLE PL/SQL编程之八:把触发器说透 得到了大家的强力支持,感谢.接下来再下猛药,介绍下一篇,大家一定要支持与推荐呀~!我也才有动力写后面的.   本篇主要内容如下: 6.1 引言 6.2 创建函数 6.3 存储过程 6.3.1 创建过程 6.3.2 调用存储过程 6.3.3 AUTHID 6.3.4 

[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日之功) 继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)                [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]

[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)

原文:[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼.百战不殆) [推荐]ORACLE PL/SQL编程之五: 异常错误处理(知已知彼.百战不殆) 继上三篇:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) 得到了大家的强力支持与建议,万分感谢.接下来介绍下一篇:oracle pl/sql异常处理部分,还望大家一定