oracle定义变量

  1. ------------------------------------定义使用变量----------------------------------  
  2.   
  3. --scalar 变量    
  4. declare   
  5. v_ename varchar2(5);  
  6. v_sal number(6,2);  
  7. c_tax_rate constant number(3,2) :=0.03;  
  8. v_tax_sal number(6,2);  
  9. begin  
  10. select ename,sal into v_ename,v_sal from emp where empno=&eno;  
  11. v_tax_sal:=v_sal*c_tax_rate;  
  12. dbms_output.put_line('雇员名:'||v_ename);  
  13. dbms_output.put_line('雇员工资:'||v_sal);  
  14. dbms_output.put_line('所得税:'||v_tax_sal);  
  15. end;  
  16. /  
  17. --最好使用%type  
  18. declare   
  19. v_ename emp.ename%type;  
  20. v_sal emp.sal%type;  
  21. v_tax_rate constant number(3,2) :=0.03;  
  22. v_tax_sal v_sal%type;  
  23. begin   
  24. select ename,sal into v_ename ,v_sal from emp where empno=&no;  
  25. v_tax_sal := v_sal*v_tax_rate;  
  26. dbms_output.put_line('雇员名:'||v_ename);  
  27. dbms_output.put_line('雇员工资:'||v_sal);  
  28. dbms_output.put_line('所得税:'||v_tax_sal);  
  29. end;  
  30. /  
  31.   
  32.   
  33. --composite 变量  
  34. 1:pl/sql记录  
  35. 记录类型:emp_record_type  
  36. 记录变量:emp_record  
  37. 记录成员:记录变量.记录成员 emp_record.name  
  38. declare  
  39. type emp_record_type is record(  
  40.      name emp.ename%type,  
  41.      salary emp.sal%type,  
  42.      title emp.job%type);  
  43. emp_record emp_record_type;  
  44. begin  
  45. select ename,sal,job into emp_record from emp where empno=&no;  
  46. dbms_output.put_line('雇员名:'||emp_record.name);  
  47. dbms_output.put_line('雇员工资:'||emp_record.salary);  
  48. dbms_output.put_line(' 岗位:'||emp_record.title);  
  49. end;  
  50. /  
  51.   
  52. 2:pl/sql表  
  53. declare  
  54. type ename_table_type is table of emp.ename%type  
  55. index by binary_integer;  
  56. ename_table ename_table_type;  
  57. begin  
  58. select ename into ename_table(-1) from emp where empno=&no;  
  59. dbms_output.put_line('雇员名:'||ename_table(-1));  
  60. end;  
  61. /  
  62.   
  63. 3:嵌套表  
  64. 4:VARRAY  
  65.   
  66. --Reference 变量  
  67. 1:ref cursor 游标变量   fetch into   
  68. declare   
  69. type c1 is ref cursor;  
  70. dyn_cursor c1;  
  71. col1 varchar2(20);  
  72. col2 varchar2(20);  
  73. begin  
  74. open dyn_cursor for select &col1,&col2 from &tab where &con;  
  75. fetch dyn_cursor into col1,col2;  
  76. dbms_output.put_line('col1:'||col1);  
  77. dbms_output.put_line(' col2:'||col2);  
  78. close dyn_cursor;  
  79. end;  
  80.   
  81. 2:ref obj_type  
  82.   
  83.   
  84. --lob 变量  
  85. clob、blob、nclob、bfile  
  86. clob和nclob储存大字符数据  
  87. bolb储存大二进制数据  
  88. bfile储存指向os文件的指针  
  89.   
  90. --使用子类型定义变量  
  91. subtype subtype_name is base_type [(constrain)] [not null];  
  92. declare   
  93. subtype my_type is varchar2(20);  
  94. v_name my_type(20);  
  95. begin  
  96. select ename into v_name from emp where empno=&no;  
  97. dbms_output.put_line('name:'||v_name);  
  98. end;  
  99. /  
  100.   
  101. --非pl/sql变量  
  102. 1:sql*plus变量  
  103. 2:pro*c/c++变量  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值