oracle 给变量赋值方法总结

CREATE OR REPLACE Procedure grantValue Is
   v_tabName     Varchar2(50);
   v_recordNum   Number;
   v_var         Varchar2(50) := '直接赋值法'; -- 方法1 直接赋值
   v_minvar      Varchar2(50);
   v_sql         Varchar2(200);
   v_tab         Varchar2(50);
 Begin
   
    -- 方法二, select into 方法
    Select Min(t.sal) Into v_minvar From emp t;
    dbms_output.put_line('最少工资为'||v_minvar);

    -- 方法三, 动态sql 发
    v_tab := 'emp';
    v_sql := 'select count(*) from '|| v_tab;
    Execute Immediate v_sql Into v_minvar;
    dbms_output.put_line('公司总人数为'||v_minvar);
    
 End grantValue;
/

-- 静态sql 与 动态 sql:oracle 编译pl/sql 程序块分为两种
-- 其一为前期编译,sql语句在程序编译期间就已经确定,大多数的编译情况属于这种类型
-- 其一为后期编译, sql语句只有在运行阶段才建立,例如当查询条件为用户输入时

-- 动态SQL 程序语法讲解
-- execute immediate dynamic_sql_string using in_params_list return into out_params_list
-- 1) 动态sql用在ddl和带参数的dml
-- 2) 绑定参数列表为输入参数列表.在运行时刻与动态sql语句中的参数进行绑定
-- 3) 输出参数列表为动态sql语句执行后返回的参数列表
-- Select * From emp; select JOB,SAL from emp
Create Or Replace Procedure getSalary(p_empno In Varchar2, p_ename In Varchar2) As
    v_job      Varchar2(50);
    v_salary   Number;
    v_sql      Varchar2(500);
 Begin 
 
   v_sql := 'select job from emp where empno ='||p_empno;
   
   execute Immediate v_sql into v_job; 
   
   dbms_output.put_line('工作职位是'||v_job||'工资情况为'||v_salary);
   
 End getSalary;     
/    
    
-- 固定数组
CREATE OR REPLACE Procedure usingArray As
   type type_array is varray(5) of varchar2(20);
   pid   type_array := type_array('1','2','3','4','5');
   pname type_array := type_array('chris','cathy','jimmy','rufus','rose');
   v_counter Number;

   Begin
     for i in 1..pid.count loop  
       
       If (pid(i) = '3')  Then
          v_counter := i;
          Exit;
         End If;
     End Loop;
 
     dbms_output.put_line(pname(v_counter));        

End usingArray;
/

   
-- oralce 数组 和各种类型的定义
-- oracle using  returning into 用法
-- oracle merge into 用法   
    
    
   

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值