Oracle 過程中變量賦值


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 || <字符串> = < 字符串>

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM