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

plsql的基本語法

發布時間: 2023-08-01 01:59:29

⑴ plsql 如何在已有的表中再加一列

1、首先,在電腦中找到PLSQL Developer;

(1)plsql的基本語法擴展閱讀:

plsql基本命令:

PL/SQL使用的資料庫操作語言還是基於SQL的,所以熟悉SQL是進行PL/SQL編程的基礎。SQL語言的分類情況大致如下:

1、數義語言(DDL):Create,Drop,Grant,Revoke,…

2、數據操縱語言(DML):Update,Insert,Delete,…

3、數據控制語言(DCL):Commit,Rollback,Savepoint,…

4、其他:Alter System,Connect,Allocate, …

⑵ plsql查詢語句中的not in什麼意思

查詢不在這個范圍類的數據。

例如:select * from student where classID notin (1,4,5)查出的就是classID不在1,4,5這個范圍內的數據。

不建議用not in這個關鍵詞來做查詢,理由:

1、效率低,2、在使用中容易出現問題,或查詢結果有誤

PL/SQL Developer是一個集成開發環境,專門開發面向Oracle資料庫的應用。PL/SQL也是一種程序語言,叫做過程化SQL語言(Proceral Language/SQL)。PL/SQL是Oracle資料庫對SQL語句的擴展。

在普通SQL語句的使用上增加了編程語言的特點,所以PL/SQL把數據操作和查詢語句組織在PL/SQL代碼的過程性單元中,通過邏輯判斷、循環等操作實現復雜的功能或者計算。MySQL 不支持 PL/SQL ,但支持Navicat Premium。

(2)plsql的基本語法擴展閱讀:

plsql特性:

1、PL/SQL完善器

該完善器允許您通過用戶定義的規則對SQL和PL/SQL代碼進行規范化處理。在編譯、保存、打開一個文件時,代碼將自動被規范化。該特性提高了您編碼的生產力,改善了PL/SQL代碼的可讀性,促進了大規模工作團隊的協作。

2、SQL 窗口

該窗口允許您輸入任何SQL語句,並以柵格形式對結果進行觀察和編輯,支持按範例查詢模式,以便在某個結果集合中查找特定記錄。另外,還含有歷史緩存,您可以輕松調用先前執行過的SQL語句。該SQL編輯器提供了同PL/SQL編輯器相同的強大特性。

3、命令窗口

使用PL/SQL Developer的命令窗口能夠開發並運行SQL腳本。該窗口具有同SQL*Plus相同的感觀,另外還增加了一個內置的帶語法加強特性的腳本編輯器。這樣,您就可以開發自己的腳本,無需編輯腳本/保存腳本/轉換為SQL*Plus/運行腳本過程,也不用離開PL/SQL Developer集成開發環境。

參考資料來源:網路-plsql

⑶ PLSQL中,select case..when.. then..什麼意思怎麼用

case when ... then .. when .. then ... end

這種表達式,是sql的不同條件分支結果。

舉例如下,

1、創建數據表,create table test_student(stu_id number, class_id number);

⑷ plsql自定義函數 不需要返回值怎樣寫

游標變數
通過游標,我們可以取得返回結果集(往往是select語句查詢的結果集)中的任何一行數據,從而提高共享的效率。
參照變數refcursor使用:
定義游標:
1.定義一個游標類型:
Type自定義游標名isrefcursor;2.定義一個游標變數:變數名自定義游標名;
打開游標:
Open游標變數forselect語句;
取出當前游標指向的行:
Fetch游標變數into其他變數;
判斷游標是否指向記錄最後:
游標變數%notfound;關閉游標:Close游標名。

第二種:
var變數名變數類型
call函數名(參數值,...)into:變數名;print變數名第三種:
select函數名(參數,...)fromal;

案例:請編寫一個函數,可以接收用戶名並返回該用戶的年薪。createfunctioninName_outSal(v_in_namevarchar2)returnnumberis
v_annual_salnumber;begin
select(sal+nvl(comm,0))*13intov_annual_salfromempwhereename=v_in_name;returnv_annual_sal;end;/
函數和過程的區別:
1、函數必須有返回值,而過程可以沒有;2、函數和過程在java中調用的方式不一樣;
java中調用oracle函數可以在select語句中直接調用,如:select自定義的函數名(參數)from表;
過程則是使用CallableStatement完成調用。
Java調用函數方式:packagecom.test;
importjava.sql.ResultSet;importjava.sql.SQLException;publicclassTestFunction{
//如何在java中調用自己編寫的函數
publicstaticvoidmain(String[]args){
Stringsql="selectinName_outSal('KING')annualfromal";ResultSetrs=SQLHelper.executeQuery(sql,null);try{
if(rs.next()){
System.out.println(rs.getDouble("annual"));//此處可以用數字或別名接收返回值}
}catch(SQLExceptione){e.printStackTrace();}finally{
if(rs!=null){try{
rs.close();
}catch(SQLExceptione){e.printStackTrace();}}
rs=null;}}

Java調用過程方式:packagecom.test;
importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.DriverManager;publicclassTestProcere{
//調用oracle中update_sal存儲過程
publicstaticvoidmain(String[]args){Connectionct=null;
CallableStatementcs=null;try{
//載入驅動
Class.forName("oracle.jdbc.driver.OracleDriver");//得到連接
ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
//創建CallableStatement介面引用對象
cs=ct.prepareCall("{callupdate_sal(?,?)}");//給?賦值
cs.setString(1,"BOSS");cs.setFloat(2,8888f);//執行我們的語句cs.execute();//提交
ct.commit();
}catch(Exceptione){e.printStackTrace();}finally{try{
if(cs!=null){cs.close();}
if(ct!=null){ct.close();}
}catch(Exceptione2){e2.printStackTrace();}
cs=null;ct=null;}

}}
pl/sql知識--包(擴張了解,自己看)
包用於在邏輯上組合過程和函數,它由包規范和包體兩部分組成。1、我們可以使用createpackage命令來創建包:建包基本語法:
create[orreplace]package包名is
procere過程名(變數名變數類型,...);
function函數名(變數名變數類型,...)return數據類型;end;/
包的規范:只包含了過程和函數的說明,但是沒有過程和函數的實現代碼。包體:用於實現包規范的過程和函數。
請編寫一個包,該包有一個過程,該過程可以接收用戶名和新的薪水。(將來用於通過用戶去更新薪水)還有一個函數,該函數可以接收一個用戶名(將來要實現得到該用戶的年薪是多少)
createpackageemp_packageis
procereupdate_sal(v_in_enamevarchar2,v_in_newsalnumber);functioninName_outSal(v_in_namevarchar2)returnnumber;end;
2、建立包體可以使用createpackagebody命令建立包體基本語法:
createorreplacepackagebody包名is
procere過程名(變數名變數類型,...)is--聲明變數;begin
--執行語句;exception
when異常名then--異常處理;end;
function函數名(變數名變數類型,...)return數據類型is--聲明變數;begin
--執行語句;end;end;/
案例:請實現前面定義的包中的過程和函數。

gin
select(sal+nvl(comm,0))*13intov_annual_salfromempwhere
ename=v_in_name;
returnv_annual_sal;end;end;/
細節說明:
1、包體中要現實的函數或過程,應當在包規范中聲明;
2、在調用包中的某個函數或過程的時候,需要使用對應的方法才可以調用。3、如何調用包的過程或函數
當調用包的過程或是函數時,在過程和函數前需要帶有包名,如果要訪問其它方案的包,還需要在包名前加方案名。調用基本方法:
exec方案名.包名.過程名(參數,...);call方案名.包名.函數名(參數,...);
也可以直接用select方案名.包名.函數名(參數,...)fromal;

⑸ 求教PLSQL中update的語法

UPDATE B SET B.最終得分=
(
SELECT
DECODE(NVL(A.得分1,0),0
,DECODE(NVL(A.得分2,0),0
,A.得分3
,A.得分2)
,A.得分1)
FROM A WHERE A.ID = B.ID
)
;
主要用了DECODE函數
DECODE(<EXP>,<VAL>,<TRUE>,<FALSE>)
<EXP>:表達式,判斷邏輯
<VAL>:值
<TRUE>:當<EXP>值等於<VAL>時賦的值
<FALSE>:當<EXP>值不等於<VAL>時賦的值