當前位置:首頁 » 編程語言 » plsql優點
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

plsql優點

發布時間: 2022-09-22 21:13:21

A. 使用PL/sql的優點

PL/SQL的優點如下:
. PL/SQL是一種高性能的基於事務處理的語言,能運行在任何ORACLE環境中,支持所有數據處理命令。通過使用PL/SQL程序單元處理SQL的數據定義和數據控制元素。
. PL/SQL支持所有SQL數據類型和所有SQL函數,同時支持所有ORACLE對象類型
. PL/SQL塊可以被命名和存儲在ORACLE伺服器中,同時也能被其他的PL/SQL程序或SQL命令調用,任何客戶/伺服器工具都能訪問PL/SQL程序,具有很好的可重用性。
. 可以使用ORACLE數據工具管理存儲在伺服器中的PL/SQL程序的安全性。可以授權或撤銷資料庫其他用戶訪問PL/SQL程序的能力。
. PL/SQL代碼可以使用任何ASCII文本編輯器編寫,所以對任何ORACLE能夠運行的操作系統都是非常便利的
. 對於SQL,ORACLE必須在同一時間處理每一條SQL語句,在網路環境下這就意味作每一個獨立的調用都必須被oracle伺服器處理,這就佔用大量的伺服器時間,同時導致網路擁擠。而PL/SQL是以整個語句塊發給伺服器,這就降低了網路擁擠。

B. oracle sql developer 和pl sql developer有什麼不同

A1.sqldeveloper 是oracle自己推出的開發工具,在JDK 6u18之前,linux系統下很不穩定,經常出現無響應的情況。之後的穩定性有了很大的改進。
A2.支持多平台(fedora、ubuntu等桌面級linux上唯一可用的圖形化開發工具);
A3.免費;
A4.除了可以連接oracle資料庫以外,sybase、mysql、mssqlserver、MS Access等資料庫也可以訪問查看數據;
A5.同一個界面可以登陸多個資料庫,方便在多個資料庫之間操作;
A6.支持自定義快捷鍵可以實現組合鍵清空界面、組合鍵復制代碼等快捷操作;
A7.比較佔用內存消耗資源較多,這是缺點也是優點,缺點是相對消耗資源,(但是對於筆記本、台式機CPU性能過剩、內存白菜價的今天,基本可以忽略不計),優點是由於佔用較多內存在執行幾十、幾百條sql的效率上很高,不像PL/SQL Dev還要有一個初始化的動作。例如執行上百條insert into xxx values(123,'aa');之類的語句,可以將這兩款軟體進行比對;
A8.個人感覺導出功能強於PL/SQL Dev 有不同意見的歡迎討論,例如導出一個用戶下的所有表結構、存儲過程、視圖、數據鏈接等等;
A9.對11g的一些新特性支持到位;
B1.PL/SQL Dev是老牌的開發工具,穩定性很高;
B2.不支持unix、linux等平台;
B3.不免費,但實際上這一點基本上可以忽略;
B4.新版本也開始支持其他資料庫的連接,但支持的種類還是不夠全;
B5.要同時訪問多個資料庫的話需要啟動多個軟體界面;
B6.不支持自定義快捷鍵,但是界面上的按鍵也足夠開發者使用了;
B7.資源佔用很少;
B8.HTML Manual功能可以將從oracle下載的官方文檔直接索引到自己的幫助當中,尤其適合不能上網的環境,即便能上網,在這個裡面搜索一些語法、錯誤號等效率也是很高的;
B9.report窗口支持直接從用sql當中選取表的欄位來做成圖表,例如餅、曲線、柱狀、雷達圖等,可以另存為PDF、圖片等。
B10.支持select * from xxx for update的修改方式,sqldeveloper貌似不支持(至少我還不會)
我能想到的大概也就是這些,因為我經常在Fedora系統下辦公,所以對sqldeveloper玩的比較多,基本上這兩款軟體我都會用,終上所述,個人認為兩款軟體可以同時存在於你的系統當中,同時使用可以事半功倍、相得益彰。

C. plsql怎麼連接mysql

plsql不能連接mysql,PL/SQL Developer集成開發環境是專門開發面向Oracle資料庫的應用。

可以連mysql的客戶端工具:

1、Navicat

Navicat是一套快速、可靠並價格相當便宜的資料庫管理工具,專為簡化資料庫的管理及降低系統管理成本而設。它的設計符合資料庫管理員、開發人員及中小企業的需要。

2、SQLyog

一個快速而簡潔的圖形化管理MYSQL資料庫的工具,它能夠在任何地點有效地管理你的資料庫,由業界著名的Webyog公司出品。

(3)plsql優點擴展閱讀

plsql的優點:

1、SQL 的支持

SQL 因為它的靈活、強大和易學,已經成為標準的資料庫語言。只要幾個像SELECT、INSERT、UPDATE 和DELETE 這樣簡單的命令就能輕松地操作關系資料庫中的數據。

2、面向對象的支持

對象類型是理想的面向對象建模工具,它能幫助我們創建復雜的應用程序。除了能創建模塊化,易維護和重用性高的軟體組件外,對象類型還可以讓不同開發組的程序員並發地開發組件。

D. 什麼是plSQL和普通的SQL有什麼區別用途是什麼

PL/SQL也是一種程序語言,叫做過程化SQL語言(Proceral Language/SQL)。PL/SQL是Oracle資料庫對SQL語句的擴展。在普通SQL語句的使用上增加了編程語言的特點,所以PL/SQL就是把數據操作和查詢語句組織在PL/SQL代碼的過程性單元中,通過邏輯判斷、循環等操作實現復雜的功能或者計算的程序語言。

使用PL/SQL可以編寫具有很多高級功能的程序,雖然通過多個SQL語句可能也能實現同樣的功能,但是相比而言,PL/SQL具有更為明顯的一些優點:
⒈能夠使一組SQL語句的功能更具模塊化程序特點;
⒉採用了過程性語言控製程序的結構;
⒊可以對程序中的錯誤進行自動處理,使程序能夠在遇到錯誤的時候不會被中斷;
⒋具有較好的可移植性,可以移植到另一個Oracle資料庫中;
⒌集成在資料庫中,調用更快;
⒍減少了網路的交互,有助於提高程序性能

E. 關於oracle PLSQL

PL/SQL是ORACLE對標准資料庫語言的擴展,ORACLE公司已經將PL/SQL整合到ORACLE 伺服器和其他工具中了,近幾年中更多的開發人員和DBA開始使用PL/SQL,本文將講述PL/SQL基礎語法,結構和組件、以及如何設計並執行一個PL/SQL程序。

PL/SQL的優點

從版本6開始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的優點以及其獨有的數據管理的便利性,那麼你很難想像ORACLE缺了PL/SQL的情形。PL/SQL 不是一個獨立的產品,他是一個整合到ORACLE伺服器和ORACLE工具中的技術,可以把PL/SQL看作ORACLE伺服器內的一個引擎,sql語句執行者處理單個的sql語句,PL/SQL引擎處理PL/SQL程序塊。當PL/SQL程序塊在PL/SQL引擎處理時,ORACLE伺服器中的SQL語句執行器處理pl/sql程序塊中的SQL語句。

PL/SQL的優點如下:

. PL/SQL是一種高性能的基於事務處理的語言,能運行在任何ORACLE環境中,支持所有數據處理命令。通過使用PL/SQL程序單元處理SQL的數據定義和數據控制元素。

. PL/SQL支持所有SQL數據類型和所有SQL函數,同時支持所有ORACLE對象類型

. PL/SQL塊可以被命名和存儲在ORACLE伺服器中,同時也能被其他的PL/SQL程序或SQL命令調用,任何客戶/伺服器工具都能訪問PL/SQL程序,具有很好的可重用性。

. 可以使用ORACLE數據工具管理存儲在伺服器中的PL/SQL程序的安全性。可以授權或撤銷資料庫其他用戶訪問PL/SQL程序的能力。

. PL/SQL代碼可以使用任何ASCII文本編輯器編寫,所以對任何ORACLE能夠運行的操作系統都是非常便利的

. 對於SQL,ORACLE必須在同一時間處理每一條SQL語句,在網路環境下這就意味作每一個獨立的調用都必須被oracle伺服器處理,這就佔用大量的伺服器時間,同時導致網路擁擠。而PL/SQL是以整個語句塊發給伺服器,這就降低了網路擁擠。

PL/SQL塊結構

PL/SQL是一種塊結構的語言,組成PL/SQL程序的單元是邏輯塊,一個PL/SQL 程序包含了一個或多個邏輯塊,每個塊都可以劃分為三個部分。與其他語言相同,變數在使用之前必須聲明,PL/SQL提供了獨立的專門用於處理異常的部分,下面描述了PL/SQL塊的不同部分:

聲明部分(Declaration section)

聲明部分包含了變數和常量的數據類型和初始值。這個部分是由關鍵字DECLARE開始,如果不需要聲明變數或常量,那麼可以忽略這一部分;需要說明的是游標的聲明也在這一部分。

執行部分(Executable section)

執行部分是PL/SQL塊中的指令部分,由關鍵字BEGIN開始,所有的可執行語句都放在這一部分,其他的PL/SQL塊也可以放在這一部分。

異常處理部分(Exception section)

這一部分是可選的,在這一部分中處理異常或錯誤,對異常處理的詳細討論我們在後面進行。

PL/SQL塊語法

[DECLARE]
---declaration statements
BEGIN
---executable statements
[EXCEPTION]
---exception statements
END

PL/SQL塊中的每一條語句都必須以分號結束,SQL語句可以使多行的,但分號表示該語句的結束。一行中可以有多條SQL語句,他們之間以分號分隔。每一個PL/SQL塊由BEGIN或DECLARE開始,以END結束。注釋由--標示。

PL/SQL塊的命名和匿名

PL/SQL程序塊可以是一個命名的程序塊也可以是一個匿名程序塊。匿名程序塊可以用在伺服器端也可以用在客戶端。

命名程序塊可以出現在其他PL/SQL程序塊的聲明部分,這方面比較明顯的是子程序,子程序可以在執行部分引用,也可以在異常處理部分引用。

PL/SQL程序塊可背獨立編譯並存儲在資料庫中,任何與資料庫相連接的應用程序都可以訪問這些存儲的PL/SQL程序塊。ORACLE提供了四種類型的可存儲的程序:

. 函數

. 過程

. 包

. 觸發器

函數

函數是命名了的、存儲在資料庫中的PL/SQL程序塊。函數接受零個或多個輸入參數,有一個返回值,返回值的數據類型在創建函數時定義。定義函數的語法如下:

FUNCTION name [{parameter[,parameter,...])] RETURN datatypes IS
[local declarations]
BEGIN
execute statements
[EXCEPTION
exception handlers]
END [name]

過程

存儲過程是一個PL/SQL程序塊,接受零個或多個參數作為輸入(INPUT)或輸出(OUTPUT)、或既作輸入又作輸出(INOUT),與函數不同,存儲過程沒有返回值,存儲過程不能由SQL語句直接使用,只能通過EXECUT命令或PL/SQL程序塊內部調用,定義存儲過程的語法如下:

PROCEDURE name [(parameter[,parameter,...])] IS
[local declarations]
BEGIN
execute statements
[EXCEPTION
exception handlers ]
END [name]

包(package)

包其實就是被組合在一起的相關對象的集合,當包中任何函數或存儲過程被調用,包就被載入入內存中,包中的任何函數或存儲過程的子程序訪問速度將大大加快。
包由兩個部分組成:規范和包主體(body),規范描述變數、常量、游標、和子程序,包體完全定義子程序和游標。

觸發器(trigger)

觸發器與一個表或資料庫事件聯系在一起的,當一個觸發器事件發生時,定義在表上的觸發器被觸發。

變數和常量

變數存放在內存中以獲得值,能被PL/SQL塊引用。你可以把變數想像成一個可儲藏東西的容器,容器內的東西是可以改變的。

聲明變數

變數一般都在PL/SQL塊的聲明部分聲明,PL/SQL是一種強壯的類型語言,這就是說在引用變數前必須首先聲明,要在執行或異常處理部分使用變數,那麼變數必須首先在聲明部分進行聲明。

聲明變數的語法如下:

Variable_name [CONSTANT] databyte [NOT NULL][:=|DEFAULT expression]

注意:可以在聲明變數的同時給變數強制性的加上NOT NULL約束條件,此時變數在初始化時必須賦值。

給變數賦值

給變數賦值有兩種方式:

. 直接給變數賦值

X:=200;
Y=Y+(X*20);

. 通過SQL SELECT INTO 或FETCH INTO給變數賦值

SELECT SUM(SALARY),SUM(SALARY*0.1)
INTO TOTAL_SALARY,TATAL_COMMISSION
FROM EMPLOYEE
WHERE DEPT=10;

常量

常量與變數相似,但常量的值在程序內部不能改變,常量的值在定義時賦予,,他的聲明方式與變數相似,但必須包括關鍵字CONSTANT。常量和變數都可被定義為SQL和用戶定義的數據類型。

ZERO_VALUE CONSTANT NUMBER:=0;

這個語句定了一個名叫ZERO_VALUE、數據類型是NUMBER、值為0的常量。

標量(scalar)數據類型

標量(scalar)數據類型沒有內部組件,他們大致可分為以下四類:

. number
. character
. date/time
. boolean

表1顯示了數字數據類型;表2顯示了字元數據類型;表3顯示了日期和布爾數據類型。

表1 Scalar Types:Numeric

Datatype
Range
Subtypes
description

BINARY_INTEGER
-214748-2147483647
NATURAL
NATURAL
NPOSITIVE
POSITIVEN
SIGNTYPE
用於存儲單位元組整數。
要求存儲長度低於NUMBER值。
用於限制范圍的子類型(SUBTYPE):
NATURAL:用於非負數
POSITIVE:只用於正數
NATURALN:只用於非負數和非NULL值
POSITIVEN:只用於正數,不能用於NULL值
SIGNTYPE:只有值:-1、0或1.

NUMBER
1.0E-130-9.99E125
DEC
DECIMAL
DOUBLE
PRECISION
FLOAT
INTEGERIC
INT
NUMERIC
REAL
SMALLINT
存儲數字值,包括整數和浮點數。可以選擇精度和刻度方式,語法:
number[([,])]。
預設的精度是38,scale是0.

PLS_INTEGER
-2147483647-2147483647

與BINARY_INTEGER基本相同,但採用機器運算時,PLS_INTEGER提供更好的性能 。

表2 字元數據類型

datatype
rang
subtype
description

CHAR
最大長度32767位元組
CHARACTER
存儲定長字元串,如果長度沒有確定,預設是1

LONG
最大長度2147483647位元組

存儲可變長度字元串

RAW
最大長度32767位元組

用於存儲二進制數據和位元組字元串,當在兩個資料庫之間進行傳遞時,RAW數據不在字元集之間進行轉換。

LONGRAW
最大長度2147483647

與LONG數據類型相似,同樣他也不能在字元集之間進行轉換。

ROWID
18個位元組

與資料庫ROWID偽列類型相同,能夠存儲一個行標示符,可以將行標示符看作資料庫中每一行的唯一鍵值。

VARCHAR2
最大長度32767位元組
STRINGVARCHAR
與VARCHAR數據類型相似,存儲可變長度的字元串。聲明方法與VARCHAR相同

表3 DATE和BOOLEAN

datatype
range
description

BOOLEAN
TRUE/FALSE
存儲邏輯值TRUE或FALSE,無參數

DATE
01/01/4712 BC
存儲固定長的日期和時間值,日期值中包含時間

F. plsql中管聯操作符的作用

1、打開PLSQL,填寫用戶名和密碼(初始有兩個用戶sys和system,密碼是自己安裝oracle資料庫時定的),Database選擇ORCL(默認資料庫,oracle中創建的用戶就像是mysql中建的資料庫,兩者有異曲同工之妙)


以上就是在PLSQL中新建用戶,創建表的步驟,謝謝!

G. datagrip和plsql哪個好

做pg資料庫開發強烈推薦datagrip。
datagrip優點:
1.查詢結果自帶排序按鈕
2.智能提示,我就不說表欄位提示了,看這個:對setenable_nestloop都有提示。對我這種整天優化的人來說這個功能簡直爆炸。
3.最主要的就是SQL的執行計劃有兩種,其ExplainPlan和PL/SQL的執行計劃簡直一毛一樣。破費。
4.說到表欄位智能提示,我之前有個表有100+個欄位,在PL/SQL中提示欄位時大概要卡個5~10s,這個是秒出。完爆PL/SQL和經常10個欄位就會假死的Navicat了。
還有譬如代碼格式化和軟體崩潰後的代碼緩存都比開發主力軟體pgAdmin高好幾個檔次。跟Navicat對比來說,這個配色也很棒。

H. plsql 什麼時候用游標 和 bulk collect

[sql] view plain
<span style="color:black;"></span>
當運行一個pl/sql程序時, pl/sql語句引擎會執行pl/sql語句。但如果在這個過程中引擎遇到sql語句,它會把這個語句傳給sql引擎(後台發生上下文切換)。
在PL/SQL和SQL引擎(engines)中,太多的上下文切換(context switches)會影響性能。這個會發生在當一個循環為集合中的每個元素執行一個單個SQL語句時。而使用批挷定能顯著提高性能。
在SQL語句中,為PL/SQL變數指定值稱為挷定(binding),
DML語句能傳遞所有集合元素到一個單個操作中,這過程稱為批挷定(bulk binding)。
如果集合有20個元素,批挷定讓你用單個操作等效於執行與20個SELECT,INSERT, UPDATE或DELETE語句。這個技術通過減少在PL/SQL和SQL引擎(engines)間的上下文切換來提高性能。批挷定包括:
1.帶INSERT, UPDATE, and DELETE語句的批挷定:在FORALL語句中嵌入SQL語句
2.帶SELECT語句的批挷定:在SELECT語句中用BULK COLLECT 語句代替INTO 。

作用:BULK COLLECT提供對數據的高速檢索。
優點:可以將多個行引入一個或多個集合中,而不是單獨變數或記錄中,減少了上下文切換,性能高。
缺點:1.消耗更多的內存(PGA);由於該數集合據存儲在每個會話中,假設一個會話多消耗5M,內存,那麼1000個就消耗約5G內存。
2.BULK COLLECT INTO的目標對象必須是集合類型。
3.不能對使用字元串類型作鍵的關聯數組使用BULK COLLECT子句。
4.如果有一個隱式的數據類型轉換,復合目標的集合(如對象類型集合)就不能用於 BULK COLLECTINTO 子句中。
bulk collect語句可以使用三種方式:
1在select into語句中使用bulk collect

2在fetch into中使用bulk collect

3在returning into中使用bulk collect
[sql] view plain
create table empl_tbl(last_name varchar2(20),
first_name varchar2(10),
salary number(10));

--創建表
create table demo_t(
id number(5),
name varchar2(50),
sales number
);

[sql] view plain
--在select into語句中使用bulk collect
DECLARE
TYPE contractList IS TABLE OF sad.cm_contracts_t.contract_number%TYPE;
contracts contractList;
BEGIN
-- Limit the number of rows to 100.
SELECT contract_number BULK COLLECT INTO contracts FROM sad.cm_contracts_t
WHERE ROWNUM <= 100;

--在fetch into中使用bulk collect
DECLARE
TYPE contracts_list IS TABLE OF sad.cm_contracts_t%ROWTYPE;
contracts_l contracts_list;
CURSOR c1 IS
SELECT contract_number,contract_id FROM contracts_l WHERE deptno > 10;
BEGIN
OPEN c1;
FETCH c1 BULK COLLECT INTO dept_recs;
END;

--在returning into中使用bulk collect
--CREATE TABLE item AS SELECT * FROM sad.sad_prm_item_ti;
declare
-- Local variables here
TYPE lineid IS TABLE OF item.lineid%TYPE;
line_id lineid;
begin
DELETE FROM item t WHERE t.lineid='1'
RETURNING lineid BULK COLLECT INTO line_id;
dbms_output.put_line('Deleted ' || SQL%ROWCOUNT || ' rows:');
FOR i IN line_id.FIRST .. line_id.LAST
LOOP
dbms_output.put_line('item : '||line_id(i));
END LOOP;
end;

[sql] view plain
-- Created on 2013/12/4 by ZWX190516
DECLARE
-- Local variables here
all_row NUMBER(10);
all_rows_bluk NUMBER(10);
temp_last_name empl_tbl.last_name%TYPE;
--首先,定義一個Index-by表數據類型
TYPE last_name_tab IS TABLE OF empl_tbl.last_name%TYPE INDEX BY BINARY_INTEGER;
last_name_arr last_name_tab;
--定義一個Index-by表集合變數
dis_count NUMBER;

--數據量
data_count NUMBER :=100000;
--記錄時間
t1 NUMBER;
t2 NUMBER;
t3 NUMBER;
t4 NUMBER;
BEGIN
all_row := 0;
all_rows_bluk := 0;
temp_last_name := ' ';

--寫入1W筆數據
FOR i IN 1 .. data_count LOOP
INSERT INTO empl_tbl
(last_name, first_name, salary)
VALUES
('carl' || (i), 'wu' || (data_count-1), i);
END LOOP;

COMMIT;

--記錄時間
SELECT DBMS_UTILITY.get_time INTO t1 FROM DUAL;

--查詢不相同數據使用時間
SELECT COUNT(DISTINCT last_name) "Distinct Last Name"
INTO dis_count
FROM empl_tbl;

--記錄時間
SELECT DBMS_UTILITY.get_time INTO t2 FROM DUAL;

--使用簡單游標實現
BEGIN
FOR cur IN (SELECT last_name FROM empl_tbl ORDER BY last_name) LOOP
IF cur.last_name != temp_last_name THEN
all_row := all_row + 1;
END IF;
temp_last_name := cur.last_name;
END LOOP;
dbms_output.put_line('all_rows are ' || all_row);
END;

--記錄時間
SELECT DBMS_UTILITY.get_time INTO t3 FROM DUAL;
--使用Bulk Collect來實現
BEGIN
SELECT last_name BULK COLLECT INTO last_name_arr FROM empl_tbl;
FOR i IN 1 .. last_name_arr.count LOOP
IF temp_last_name != last_name_arr(i) THEN
all_rows_bluk := all_rows_bluk + 1;
END IF;
temp_last_name := last_name_arr(i);
END LOOP;
dbms_output.put_line(' BULK COLLECT all_rows are ' || all_rows_bluk);
END;
--記錄時間
SELECT DBMS_UTILITY.get_time INTO t4 FROM DUAL;

DBMS_OUTPUT.put_line('Execution Time (hsecs)');
DBMS_OUTPUT.put_line('---------------------');
DBMS_OUTPUT.put_line('distince: ' || TO_CHAR(t2 - t1));
DBMS_OUTPUT.put_line('cursor one by one : ' || TO_CHAR(t3 - t2));
DBMS_OUTPUT.put_line('cursor BULK COLLECTe : ' || TO_CHAR(t4 - t3));

END;

I. toad和plsql developer個有什麼優缺點

toad是第三方軟體 你只要記住功能比sqlplus功能更強大就可以了 建議使用toad 但是在sqlplus下也要經常使用,因為如果換了工作環境,而無法使用toad或plsql developer這樣的工具的話。還可以用sqlplus來完成工作 對,toad就是通過client與oracle...