Oracle 过程中变量赋值

简介: create or replace function get_sal1(id employees.employee_id%type) return number is sal employees.
create or replace function get_sal1(id employees.employee_id%type)
  return number is

  sal employees.salary%type;

begin
  sal := 0;
  select salary into sal from employees where employee_id = id;
  return sal;
end;

 

create or replace function get_sal1(id employees.employee_id%type)
  return number is

  sal employees.salary%type:= 0;
  --sal := 0;
begin

  select salary into sal from employees where employee_id = id;
  return sal;
end;

  

 

 下面会报错:

Compilation errors for FUNCTION HR.GET_SAL1

Error: PLS-00103: 出现符号 "SELECT"在需要下列之一时:         * & = - + ; < / > at in           is mod remainder not rem <an exponent (**)> <> or != or ~= >=           <= <> and or like like2 like4 likec between || multiset           member submultiset        符号 ";" 被替换为 "SELECT" 后继续。 Line: 8 Text: select salary into sal from employees where employee_id = id;

create or replace function get_sal1(id employees.employee_id%type)
  return number is

  sal employees.salary%type;

begin
  sal := 0
  select salary into sal from employees where employee_id = id;

  return sal;
end;

  这个也会报错:

Compilation errors for FUNCTION HR.GET_SAL1

Error: PLS-00103: 出现符号 "="在需要下列之一时:         constant exception           <an identifier> <a double-quoted delimited-identifier> table           long double ref char time timestamp interval date binary           national character nchar        符号 "<an identifier>" 被替换为 "=" 后继续。 Line: 5 Text: sal := 0;

create or replace function get_sal1(id employees.employee_id%type)
  return number is

  sal employees.salary%type;
  sal := 0;

begin

  select salary into sal from employees where employee_id = id;
  return sal;
end;

  

转:

PL/SQL支持SQL中的数据类型,PL/SQL中正常支持NUMBER,VARCHAR2,DATEOracle SQL数据类型。声明变量必须指明变量的数据类型,也可以声明变量时对变量初始化,变量声明必须在声明部分。声明变量的语法是:

变量名 数据类型[ :=初始值]

语法解析:

数据类型如果需要长度,可以用括号指明长度,比如:varchar2(20)

 

声明变量

SQL> DECLARE

  2       sname VARCHAR2(20) :='jerry';  

  3  BEGIN

  4       sname:=sname||' and tom';  

  5       dbms_output.put_line(sname);  

  6  END;

  7  /jerry

PL/SQL procedure successfully completed

代码解析:

     声明一个变量sname,初始化值是“jerry”。字符串用单引号,如果字符串中出现单引号可以使用两个单引号(’’)来表示,即单引号同时也具有转义的作用。     对变量sname重新赋值,赋值运算符是“:=”。

     dbms_output.put_line是输出语句,可以把一个变量的值输出,在SQL*Plus中输出数据时,可能没有结果显示,可以使用命令:set serveroutput on设置输出到SQL*Plus控制台上。

 

 

对变量赋值还可以使用SELECT…INTO 语句从数据库中查询数据对变量进行赋值。但是查询的结果只能是一行记录,不能是零行或者多行记录

 

 

数据库赋值
  数据库赋值是通过 SELECT 语句来完成的,每次执行 SELECT 语句就赋值一次,一般要求被赋值的变量与SELECT中的列名要一一对应。如:
例:
DECLARE
emp_id    emp.empno%TYPE :=7788;
emp_name  emp.ename%TYPE;
wages     emp.sal%TYPE;
BEGIN
SELECT ename, NVL(sal,0) + NVL(comm,0) INTO emp_name, wages
FROM emp WHERE empno = emp_id;
Dbms_output.put_line(emp_name||'----'||to_char(wages));
END;
 
提示:不能将SELECT语句中的列赋值给布尔变量。

 

 

字符及数字运算特点
空值加数字仍是空值:NULL + < 数字> = NULL
空值加(连接)字符,结果为字符:NULL || <字符串> = < 字符串>

 

 

 

 

相关文章
|
7月前
|
SQL 存储 Oracle
Oracle的PL/SQL定义变量和常量:数据的稳定与灵动
【4月更文挑战第19天】在Oracle PL/SQL中,变量和常量扮演着数据存储的关键角色。变量是可变的“魔术盒”,用于存储程序运行时的动态数据,通过`DECLARE`定义,可在循环和条件判断中体现其灵活性。常量则是不可变的“固定牌”,一旦设定值便保持不变,用`CONSTANT`声明,提供程序稳定性和易维护性。通过 `%TYPE`、`NOT NULL`等特性,可以更高效地管理和控制变量与常量,提升代码质量。善用两者,能优化PL/SQL程序的结构和性能。
|
SQL Oracle 关系型数据库
ORACLE中实现表变量的方法
经常看到SQLSERVER 中用表变量类型的方式就能做到缓存一个比较大的中间结果, 然后再对这个表变量做处理,非常方便,那么ORACLE有这种表变量的方式处理中间结果么 实验后发下你用如下方法可以起到SQL SERVER里表变量的作用     1...
1334 0
|
SQL Oracle 关系型数据库
oracle 11.2.0.1告警日志报错ORA-03137与绑定变量窥探BUG9703463
2017年12月份第二次oracle数据库巡检中,发现某一地市oracle数据库发现SQL语句触发特定版本BUG
1735 0
|
SQL Oracle 关系型数据库