前端之家收集整理的这篇文章主要介绍了
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 用法
原文链接:https://www.f2er.com/oracle/212695.html