PL/SQL编程—变量

简介: PL/SQL编程—变量

11d9cec7422e9d7416f2bf3ff63d321b.png

72c67f3576ccb536f4378980986be492.png

65f14fc40dc299ce6dc3882149ac94c9.png

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

f26b481fbfb5b24535b99045fc783bb4.png

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

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

09411eba6bc6c92702db7e3cff7cfab5.png

b66a5042b259b761e9b8d26a0637e478.png

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

c6c08478833d539b60b0fa06a3646911.png

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


目录
打赏
0
0
0
0
12
分享
相关文章
|
5天前
|
SQL
【YashanDB知识库】like 变量的SQL语句应用程序执行效率低与yasql执行效率高
【YashanDB知识库】like 变量的SQL语句应用程序执行效率低与yasql执行效率高
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
69 2
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
SQL 编程最佳实践简直太牛啦!带你编写高效又可维护的 SQL 代码,轻松应对数据库挑战!
【8月更文挑战第31天】在SQL编程中,高效与可维护的代码至关重要,不仅能提升数据库性能,还降低维护成本。本文通过案例分析探讨SQL最佳实践:避免全表扫描,利用索引加速查询;合理使用JOIN,避免性能问题;避免使用`SELECT *`,减少不必要的数据传输;使用`COMMIT`和`ROLLBACK`确保事务一致性;添加注释提高代码可读性。遵循这些实践,不仅提升性能,还便于后期维护和扩展。应根据具体情况选择合适方法并持续优化SQL代码。
98 0
DataWorks产品使用合集之ODPPS中如何使用SQL查询从表中获取值并将其赋值给临时变量以供后续使用
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
9月前
|
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
112 3
MaxCompute产品使用问题之odps sql如何定义变量
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
311 0
|
9月前
|
PL/SQL中执行按钮变为灰色后如何恢复【已解决】
PL/SQL中执行按钮变为灰色后如何恢复【已解决】
617 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等