成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Oracle PL/SQL語言初級教程之過程和函數

瀏覽:237日期:2023-11-21 08:19:53
過程和函數 過程和函數都以編譯后的形式存放在數據庫中,函數可以沒有參數也可以有多個參數并有一個返回值。過程有零個或多個參數,沒有返回值。函數和過程都可以通過參數列表接收或返回零個或多個值,函數和過程的主要區別不在于返回值,而在于他們的調用方式。過程是作為一個獨立執行語句調用的:pay_involume(invoice_nbr,30,due_date);函數以合法的表達式的方式調用:order_volumn:=open_orders(SYSDATE,30);創建過程的語法如下:CREATE [ OR REPLACE] PROCEDURE [schema.]procedure_name[parameter_lister]{ASIS}declaration_sectionBEGINexecutable_section[EXCEPTIONexception_section]END [procedure_name] 每個參數的語法如下:paramter_name mode datatype [(:=DEFAULT) value]mode有三種形式:IN、OUT、INOUT。IN表示在調用過程的時候,實際參數的取值被傳遞給該過程,形式參數被認為是只讀的,當過程結束時,控制會返回控制環境,實際參數的值不會改變。OUT在調用過程時實際參數的取值都將被忽略,在過程內部形式參數只能是被賦值,而不能從中讀取數據,在過程結束后形式參數的內容將被賦予實際參數。INOUT這種模式是IN和OUT的組合;在過程內部實際參數的值會傳遞給形式參數,形勢參數的值可讀也可寫,過程結束后,形勢參數的值將賦予實際參數。創建函數的語法和過程的語法基本相同,唯一的區別在于函數有RETUREN子句CREATE [ OR REPLACE] FINCTION [schema.]function_name[parameter_list]RETURN returning_datatype{ASIS}declaration_sectionBEGINexecutable_section[EXCEPTION]exception_sectionEND [procedure_name] 在執行部分函數必須有喲個或多個return語句。在創建函數中可以調用單行函數和組函數,例如:CREATE OR REPLACE FUNCTION my_sin(DegreesIn IN NUMBER)RETURN NUMBERIS pi NUMBER=ACOS(-1);RadiansPerDegree NUMBER;BEGINRadiansPerDegree=pi/180;RETURN(SIN(DegreesIn*RadiansPerDegree));END包是一種將過程、函數和數據結構捆綁在一起的容器;包由兩個部分組成:外部可視包規范,包括函數頭,過程頭,和外部可視數據結構;另一部分是包主體(package body),包主體包含了所有被捆綁的過程和函數的聲明、執行、異常處理部分。打包的PL/SQL程序和沒有打包的有很大的差異,包數據在用戶的整個會話期間都一直存在,當用戶獲得包的執行授權時,就等于獲得包規范中的所有程序和數據結構的權限。但不能只對包中的某一個函數或過程進行授權。包可以重載過程和函數,在包內可以用同一個名字聲明多個程序,在運行時根據參數的數目和數據類型調用正確的程序。創建包必須首先創建包規范,創建包規范的語法如下:CREATE [OR REPLACE] PACKAGE package_name{ASIS}public_variable_declarations public_type_declarations public_exception_declarations public_cursor_declarations function_declarations procedure_specificationsEND [package_name]創建包主體使用CREATE PACKAGE BODY語句:CREATE [OR REPLACE] PACKAGE BODY package_name{ASIS}private_variable_declarations private_type_declarations private_exception_declarations private_cursor_declarations function_declarations procedure_specificationsEND [package_name]私有數據結構是那些在包主體內部,對被調用程序而言是不可見的。觸發器(Triggers)觸發器是一種自動執行響應數據庫變化的程序。可以設置為在觸發器事件之前或之后觸發或執行。能夠觸發觸發器事件的事件包括下面幾種:DML事件DDL事件數據庫事件DML事件觸發器可以是語句或行級觸發器。DML語句觸發器在觸發語句之前或之后觸發DML行級觸發器在語句影響的行變化之前或之后觸發。用戶可以給單一事件和類型定義多個觸發器,但沒有任何方法可以增強多觸發器觸發的命令。下表列出了用戶可以利用的觸發器事件:事件觸發器描述INSERT 當向表或視圖插入一行時觸發觸發器UPDATE 更新表或視圖中的某一行時觸發觸發器DELETE從表或視圖中刪除某一行時觸發觸發器CREATE當使用CREATE語句為數據庫或項目增加一個對象時觸發觸發器ALTER當使用ALTER語句為更改一個數據庫或項目的對象時觸發觸發器DROP當使用DROP語句刪除一個數據庫或項目的對象時觸發觸發器START打開數據庫時觸發觸發器,在事件后觸發SHUTDOWN 關閉數據庫時觸發,事件前觸發LOGON當一個會話建立時觸發,事件前觸發LOGOFF當關閉會話時觸發,事件前觸發SERVER服務器錯誤發生時觸發觸發器,事件后觸發創建觸發器的語法如下:CREATE [OR REPLACE] TRIGGER trigger_name{beforeafterinstead of} eventON {table_or_view_nameDATABASE}[FOR EACH ROW[WHEN condition]]trigger_body只有DML觸發器(INSERT、UPDATE、DELETE)語句可以使用INSTEAD OF觸發器并且只有表的DML觸發器可以是BEFORE或AFTER觸發器。象約束一樣觸發器可以被設置為禁用或啟用來關閉或打開他們的執行體(EXECUTE),將觸發器設置為禁用或啟用使用ALTER TRIGGER語句:ALTER TRIGGER trigger_name ENABLE;ALTER TRIGGER trigger_name DISABLE;要禁用或啟用表的所有觸發器,使用ALTER TABLE語句ALTER TRIGGER table_name DISABLE ALL TRIGGER;ALTER TRIGGER table_name ENABLE ALL TRIGGER;刪除觸發器使用DROP TRIGGERDROP TRIGGER trigger_name;數據字典Oracle數據字典包含了用戶數據庫的元數據。帶下劃線的表名稱中帶OBJ$、UET$、SOURCE$,這些表是在執行CREATE DATABASE語句期間由sql.bsq腳本創建的,一般情況下用戶很少訪問這些表。腳本catalog.sql(通常位于$oracle_home/rdbms/admin)在CREATE DATABASE語句之后立即運行,創建數據字典視圖。數據字典視圖大致可以分為三類:.前綴為USER_的數據字典視圖,包含了用戶擁有的對象的信息。.前綴為ALL_的數據字典視圖,包含了用戶當前可以訪問的全部對象和權限的信息。.前綴為DBA_的數據字典視圖,包含了數據庫擁有的所有對象和權限的信息。在絕大多數數據字典視圖中都有象DBA_TABLES,ALL_TABLES和USER_TABLES這樣的視圖家族。Oracle中有超過100個視圖家族,所以要全面介紹這些視圖家族是單調乏味的而且沒有多大的意義。在下表中列出了最重要和最常用的視圖家族,需要注重的是每個視圖家族都有一個DBA_,一個ALL_一個USER_視圖。視圖家族(View Family)描述COL_PRIVS包含了表的列權限,包括授予者、被授予者和權限EXTENTS 數據范圍信息,比如數據文件,數據段名(segment_name)和大小INDEXES索引信息,比如類型、唯一性和被涉及的表IND_COLUMNS 索引列信息,比如索引上的列的排序方式OBJECTS 對象信息,比如狀態和DDL timeROLE_PRIVS角色權限,比如GRANT和ADMIN選項SEGMENTS 表和索引的數據段信息,比如tablespace和storageSEQUECNCES序列信息,比如序列的cache、cycle和ast_numberSOURCE 除觸發器之外的所有內置過程、函數、包的源代碼SYNONYMS 別名信息,比如引用的對象和數據庫鏈接db_linkSYS_PRIVS 系統權限,比如grantee、privilege、admin選項TAB_COLUMNS 表和視圖的列信息,包括列的數據類型TAB_PRIVS 表權限,比如授予者、被授予者和權限TABLES表信息,比如表空間(tablespace),存儲參數(storage parms)和數據行的數量TRIGGERS 觸發器信息,比如類型、事件、觸發體(trigger body)USERS用戶信息,比如臨時的和缺省的表空間VIEWS視圖信息,包括視圖定義在Oracle中還有一些不常用的數據字典表,但這些表不是真正的字典家族,他們都是一些重要的單一的視圖。VIEW NAME描述USER_COL_PRIVS_MADE用戶授予他人的列權限USER_COL_PRIVS_RECD 用戶獲得的列權限USER_TAB_PRIVS_MADE 用戶授予他人的表權限USER_TAB_PRIVS_RECD用戶獲得的表權限其他的字典視圖中主要的是V$視圖,之所以這樣叫是因為他們都是以V$或GV$開頭的。V$視圖是基于X$虛擬視圖的。V$視圖是SYS用戶所擁有的,在缺省狀況下,只有SYS用戶和擁有DBA系統權限的用戶可以看到所有的視圖,沒有DBA權限的用戶可以看到USER_和ALL_視圖,但不能看到DBA_視圖。與DBA_,ALL,和USER_視圖中面向數據庫信息相反,這些視圖可視的給出了面向實例的信息。  在大型系統上化幾周時間手工輸入每一條語句 手工輸入帶用戶名變量的語句,然后再輸入每一個用戶名,這需要花好幾個小時的時間 寫一條SQL語句,生成需要的ALTER USER語句,然后執行他,這只需要幾分鐘時間很明顯我們將選擇生成SQL的方法:例:SELECT 'ALTER USER'username'TEMPORARY TABLESPACE temp;'FROM DBA_USERSWHERE username<>'SYS' AND temporary_tablespace<>'TEMP';這個查詢的結果將被脫機處理到一個文件中,然后在執行:ALTER USER SYSTEM TEMPORARY TABLESPACE temp;ALTER USER OUTLN TEMPORARY TABLESPACE temp;ALTER USER DBSNMP TEMPORARY TABLESPACE temp;ALTER USER SCOTT TEMPORARY TABLESPACE temp;ALTER USER DEMO TEMPORARY TABLESPACE temp;
標簽: Oracle 數據庫
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
在线看无码的免费网站| 91美女片黄在线观看91美女| 欧美精品久久久久久久多人混战 | 欧美午夜精品一区二区三区| 久久精品国产清高在天天线| 免费亚洲电影| 色综合久久99| 欧美三级日韩在线| 91精品国产91久久久久久一区二区| 欧美又粗又大又爽| 欧美性一级生活| 欧美日韩一区高清| 欧美一区二区观看视频| 欧美刺激脚交jootjob| 欧美电视剧在线看免费| 精品免费日韩av| 欧美国产在线观看| 中文字幕永久在线不卡| 中文字幕一区在线| 亚洲国产日产av| 免费在线观看视频一区| 国产毛片精品一区| 春色校园综合激情亚洲| 欧美在线日韩精品| 99国产成+人+综合+亚洲欧美| 一区二区激情| 欧美在线一二三| 欧美一区永久视频免费观看| 亚洲精品在线电影| 国产精品三级视频| 亚洲国产日韩精品| 国产一区不卡视频| 欧美成人嫩草网站| 一本一本久久| 欧美日韩国产bt| 日韩欧美国产一二三区| 国产精品日日摸夜夜摸av| 一区二区在线观看不卡| 欧美a级一区二区| 成人综合婷婷国产精品久久蜜臀| 午夜精品亚洲| 西西人体一区二区| 在线成人av网站| 欧美国产97人人爽人人喊| 亚洲一级不卡视频| 国产一区在线精品| 欧美视频官网| 久久综合电影| 欧美刺激午夜性久久久久久久| 亚洲图片另类小说| 久久国产麻豆精品| 99久久99久久精品免费看蜜桃| 亚洲高清视频一区| 欧美三区在线观看| 国产亚洲视频系列| 日产精品久久久久久久性色| 成人av电影免费观看| 99re66热这里只有精品4| 日韩一区二区三区在线| 亚洲卡通欧美制服中文| 国产精品一区二区三区99| 国产一区在线免费观看| 欧美色图片你懂的| 国产蜜臀97一区二区三区| 日韩av成人高清| 91丨porny丨在线| 老司机精品导航| 久久婷婷国产综合国色天香| 亚洲mv在线观看| 91在线视频网址| 色婷婷精品久久二区二区蜜臀av| 久久天堂av综合合色蜜桃网| 日韩电影一区二区三区| 9i看片成人免费高清| 久久久久久9| 日本一区二区三区四区在线视频| 蜜臀av一区二区在线免费观看| 欧美一区国产在线| 在线观看欧美黄色| 亚洲欧美中日韩| 国产a视频精品免费观看| 午夜一区二区三视频在线观看| 久久亚洲私人国产精品va媚药| 亚洲成a天堂v人片| 欧美日韩三区四区| 在线播放中文字幕一区| 亚洲国产欧美另类丝袜| 欧美 日韩 国产一区二区在线视频 | 麻豆精品91| 国产日韩精品久久久| 精品中文字幕一区二区小辣椒| 亚洲成人资源| 精品国产污网站| 麻豆一区二区三| 一本综合精品| 欧美激情一区二区三区全黄| 国产精品一区一区| 久久综合伊人| 亚洲精品免费电影| 欧美少妇一区| 久久久精品tv| 国产成人精品亚洲日本在线桃色| 色狠狠色狠狠综合| 亚洲高清久久久| 日韩一级大片| 国产精品久久久久久久久快鸭 | 国产精品红桃| 久久免费午夜影院| 丁香五精品蜜臀久久久久99网站 | 在线看国产一区二区| 亚洲三级理论片| a亚洲天堂av| 日韩视频免费直播| 精品中文字幕一区二区| 日本久久电影网| 亚洲成人综合网站| 亚洲另类自拍| 自拍偷自拍亚洲精品播放| 欧美成人精品| 亚洲国产成人一区二区三区| av电影在线不卡| 日韩视频在线观看一区二区| 国内精品写真在线观看| 久久综合一区| 蜜桃av一区二区三区电影| 久久久www| 午夜精品福利久久久| 亚洲欧美日韩精品一区二区| 亚洲精品中文字幕在线观看| 亚洲国产1区| 国产精品福利av| 亚洲一级影院| 亚洲人亚洲人成电影网站色| 伊人久久亚洲美女图片| 国产精品久久免费看| 欧美日韩三级| 国产精品每日更新| 91老司机福利 在线| 久久久久88色偷偷免费| 99热国产精品| 欧美激情综合五月色丁香 | 夜夜嗨av一区二区三区中文字幕 | 色狠狠色狠狠综合| 日韩视频在线播放| 欧美日韩国产三区| aaa欧美色吧激情视频| 精品一区二区三区久久久| 亚洲国产日韩精品| 一区二区三区四区在线播放| 中文字幕不卡一区| 久久日韩精品一区二区五区| 91精品一区二区三区久久久久久| 在线观看不卡视频| 先锋a资源在线看亚洲| 一本色道久久综合亚洲精品不| 你懂的成人av| 欧美日韩成人一区二区| 亚洲一二三区视频在线观看| 国产精品手机在线| 轻轻草成人在线| 欧美一区二区三区日韩视频| 亚洲h在线观看| 欧美国产丝袜视频| 久久网站热最新地址| 欧美sm极限捆绑bd| 日韩欧美视频在线| 日韩三级伦理片妻子的秘密按摩| 中文字幕一区二区日韩精品绯色| 午夜视频久久久| 亚洲欧美成aⅴ人在线观看| 蜜桃av久久久亚洲精品| 久久不见久久见免费视频7| 日韩欧美不卡在线观看视频| 99精品视频在线免费观看| 亚洲国产高清在线观看视频| 在线综合亚洲| 老司机精品视频在线| 亚洲精品一区二区在线观看| 亚洲国产欧美国产综合一区| 天堂在线一区二区| 日韩亚洲电影在线| 亚洲一级电影| 毛片av中文字幕一区二区| 欧美大片在线观看一区| 亚洲欧洲一区| 伦理电影国产精品| 国产片一区二区三区| 久久经典综合| 成人午夜视频在线观看| 亚洲欧美另类图片小说| 欧美性大战久久久久久久| av毛片久久久久**hd| 亚洲福利视频一区二区| 欧美一区二区高清| 国产亚洲欧洲| 成人黄色一级视频| 亚洲成av人片在线| 日韩欧美电影一区| 西西人体一区二区| 91影院在线观看|