oracle PLSQL 查詢語句select t.*, * from * t
解釋如下
t.* -----表示查詢表t 所有字段
*---表示唯一標識t表中的物理位置字段(偽列),這個字段是每個表中都默認有的,當設計表時沒有設置主鍵或唯一標實的時候,也可吧他動作表的唯一標示(刪除重復數據可用到)
*---表示查詢的是用戶名為PU下的YK表,如果是以PU用戶登陸的數據庫,PU也可以省略
* 表的別名,用于書寫的時候方便簡單,與* 完全相同,只是名字不同而已,就行你的學名和你的小名一樣。
整個語句的意思也很簡單,就是查詢PU用戶下YK表的所有記錄信息,以及每條記錄對應的ROWID信息
rowid是oracle特有的,sqlserver不支持,sqlserver可設置自增字段或唯一標識列代替
oracle中的plsql的一個最基本的語句,麻煩各位跟我說的詳細點?我只
這些都是定義數據類型的,就好象你定義一個archar2的數據一樣,你在plsql中定義一個varchar2類型的時候要寫 aaaa varchar2,那么這里不是用varchar2什么的具體的格式來表示數據類型,而是用了已經有的數據類型,或者自己創建的數據類型。
比如(不完全是,不過大概可以這么理解,因為這里的pkg_mail_*_returnremind應該是一個集合):
cur_person (前面這個可以看成變量) pkg_mail_*_returnremind(后面這個前面的pkg_mail_param是包名,后面的這個應該是包里面定義的一個type(這里實際是個集合),我看見用cur開頭,估計是一般情況下用在游標處了。)
你去pkg_mail_param包中,找到cur_returnremind看看他是怎么定義的。
既然cur_returnremind是一個集合,那么每一行的數據類型又是什么?
這里就是empRowType cur_person%rowtype
emp_email t_bd_*%type應該是定義 emp_email他的數據類型和t_bd_person表的femail字段一致。
最后一句說的是cur_returnremind實際是propertyreturninfo的返回職的類型的游標(不完全正確,不過個人認為可以這么理解)
這個寫法其實麻煩的要死,如果propertyreturninfo只有一個 t_bd_*的類型,那么干嗎不直接用 t_bd_*的類型,個人比較煩oracle的數組和集合,用起來麻煩。不過在合并或者連接上來說還稍微有點用。
Oracle數據庫sql語句
DML操作(insert , delete , update)之后,一定要使用commit或rollback命令來結束該事務,否則直接關閉SQL Plus,數據庫默認rollback之前未提交的事務,所以今天你在select的時候 會顯示未選定行。
而手動輸入commit,rollback 這類的命令,是顯示的提交事務(完成事務)。
如果在DML操作之后未及時顯示的提交,而是又進行了DDL操作(create alter。),則數據庫會隱式的提交之前未完成的事務。
所以 下次一定要注意哦~~
關于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) 觸發器與一個表或數據庫事件聯系在一起的,當一個觸發器事件發生時,定義在表上的觸發器被觸發。
變量和常量 變量存放在。
oracle 中plsql 怎樣寫更新一行的語句(高手請進)
簡單的update語句
update table_name
set column_name=。
如果是通過游標來遍歷整個表,篩選符合條件的記錄進行修改,那么可以使用游標來for update。
select 。. from 。. for update [of column reference] [nowait];
[nowait] 如果得不到訪問資源就立即返回。
如果要使用游標修改數據的話,一定要在游標定義中 SELECT 語句中加上 FOR UPDATE。
在游標執行過程中的 UPDATE 語句:
UPDATE。.SET。WHERE CRRENT OF cursor_name;
請問各位大神以下oracle plsql語句怎么寫
select * 倉庫名稱, t.合計, t.物品A, t.物品B, t.物品C, t.物品D, t.物品E from ckdm c, (select *, sum(decode(*, 301, *)) + sum(decode(*, 302, *)) + sum(decode(*, 303, *)) + sum(decode(*, 304, *)) + sum(decode(*, 305, *)) 合計, sum(decode(*, 301, *)) 物品A, sum(decode(*, 302, *)) 物品B, sum(decode(*, 303, *)) 物品C, sum(decode(*, 304, *)) 物品D, sum(decode(*, 305, *)) 物品E, from ckhp a group by *) t where * = * group by ckmc order by *;沒有實際建表,你試下是否可行。
java程序如何調用oracle的plsql語句
一個簡單的例子看看:先建包:create or replace package testpackage astype test_cursor is ref cursor;end testpackage;建立存儲過程:create or replace procedure sp_pro(spNo in number,p_cursor out *_cursor) isbeginopen p_cursor for select * from emp where deptno=spNo;end;java調用:CallableStatement cs=*eCall("{call sp_pro(?,?)}");*(1,10);*erOutParameter(2,*);*e();ResultSet rs=(ResultSet)*ect(2);while(){ *n(*(1)+" "+*ing(2));}。
T-SQL語句改為兼容Oracle PLSQL語句
declare tmpSchoolID INT;
CURSOR MyCur is SELECT DISTINCT SchoolID FROM MT_EnrollPlanAuditingLog WHERE EnrollProjectID=0;
BEGIN
execute immediate 'create table tmp
(
id INT PRIMARY KEY IDENTITY(1,1),
enrollProjectID INT,
schoolID INT,
STATUS INT
);';
open myCur;
FETCH myCur INTO tmpSchoolID;
WHILE myCur%found
loop
INSERT INTO tmp (enrollProjectID,schoolID,STATUS)
SELECT EnrollProjectID,SchoolID,AuditingStatus
FROM MT_EnrollPlanAuditingLog
WHERE SchoolID=tmpSchoolID
AND EnrollProjectID=1 and rounum=1
ORDER BY EnrollPlanAuditingLogID desc;
end loop;
SELECT COUNT(1) FROM tmp;
close myCur;
commit;
end;
轉載請注明出處華閱文章網 » oracleplsql語句