plsql常見命令筆記

2021-10-07 00:07:49 字數 3714 閱讀 4157

-- ###################### pl/sql程式設計(sql*plus中無法執行時在末尾加"\") ######################;

-- 開啟輸出選項

set serveroutput on

;-- 顯示錯誤資訊

show error;

-- 變數賦值 :=

-- pl/sql程式設計的基本示例:

-- 定義部分

declare

v_ename varchar2(20)

; v_sal number;

-- 執行部分

begin

-- 執行語句給變數賦值

select ename, sal into v_ename, v_sal from emp where empno=&no

;-- 在控制台列印變數

dbms_output.put_line(

'雇員名:'

|| v_ename ||

'薪水:'

|| v_sal)

;-- 例外處理

exception

when no_data_found then

dnms_output.put_line(

'未找該員工');

end;

-- ############# 儲存過程 ###############

-- 建立儲存過程(or replace: 存在時替換)

create[or

replace

]procedure 過程名_pro[

(引數)]is

-- 定義變數

begin

執行語句

end;

-- 呼叫儲存過程

exec 過程名[

(引數)];

-- ############# 函式 ###############

-- 建立函式

create

function 函式名_func(引數)

return 返回值型別 is

返回變數名 返回變數具體型別;

-- 例如: 返回值型別為number,返回變數具體型別為number(7, 2)

begin

select 需要返回的字段 into 返回變數名 from 表名 where 字段 = 引數;

return 返回變數名;

end;

-- sql*plus中呼叫函式

var 變數名 變數型別;

call 函式名(引數)

into:變數名;

print 變數名;

-- ############# 包 ###############

-- 建立包

create package 包名 is

procedure 儲存過程名(引數)

;-- 儲存過程宣告

function 函式名(引數)

return 返回值型別;

-- 函式宣告

end;

-- 建立包體

create

orreplace package body 包名 is

-- 儲存過程實現

procedure 儲存過程名(引數)

isbegin

insert

into test1 values

(v_id, v_name)

;end

;-- 函式實現

function 函式名(引數)

return 返回值型別 is

返回變數 返回變數具體型別;

begin

select 需要返回的字段 into 返回變數名 from 表名 where 字段 = 引數;

return 返回變數;

end;

end;

-- 呼叫包

call 包名.儲存過程名(3,

'使用包插入的值');

select 包名.函式名(

'scott'

)from dual;

select

*from test1;

-- 記錄型別(類似結構體)

declare

-- type 記錄變數_type is record (記錄成員);

type emp_record_type is record(name emp.ename%

type

, salary emp.sal%

type

, title emp.job%

type);

emp_record emp_record_type;

begin

select ename, sal, job into emp_record from emp where empno =

7654

;-- 記錄變數.記錄成員

dbms_output.put_line(

'姓名:'

|| emp_record.name ||

', 薪水:'

|| emp_record.salary ||

', 工作:'

|| emp_record.title)

;end

;-- 表型別(類似陣列)

declare

-- type 表型別_type is table of 字段型別 index by binary_integer;

type sp_table_type is

table

of emp.ename%

type

index

by binary_integer;

sp_table sp_table_type;

begin

select ename into sp_table(-1

)from emp where empno =

7654

;-- 記錄變數.記錄成員

dbms_output.put_line(

'姓名:'

|| sp_table(-1

));end

;-- 游標型別(輸入部門號,並顯示該部門所有員工姓名和工資)

declare

-- 定義游標

type sp_emp_cursor is ref cursor

; test_cursor sp_emp_cursor;

-- 定義接受結果的變數

v_ename emp.ename%

type

; v_sal emp.sal%

type

;begin

-- 使游標指向指定結果集

open test_cursor for

select ename, sal from emp;

-- 迴圈取出結果

loop

fetch test_cursor into v_ename, v_sal;

-- 判斷游標是否為空

exit

when test_cursor%notfound;

dbms_output.put_line(

'姓名:'

|| v_ename ||

', 薪水: '

|| v_sal)

;end

loop

;-- 關閉游標

close test_cursor;

end;

Oracle 之PLSQL的常見命令

1.sql structured query language sql有許多關鍵字,以下語句是常用於開頭的語句 alter insert audit lock commit noaudit comment rename create revoke delete select drop update ...

pl sql常見錯誤異常

1.錯 誤 名 稱 錯誤 錯 誤 含 義 2.cursor already open ora 06511 試圖開啟已經開啟的游標 3.invalid cursor ora 01001 試圖使用沒有開啟的游標 4.dup val on index ora 00001 儲存重複值到惟一索引約束的列中 5...

pl sql常見使用心得

1 plsql怎麼設定雙擊表名就查出表資料 選單tool preference browser 右邊的 object type 選擇table double click action 選擇query data 之後選擇ok即可,雙擊表名就查出表資料了 2 如何設定tables sequences 等...