ORACLE如何實現函數、包、存儲過程的導入和導出


 

 

建 議可以用常規的檢查,檢查一下:數據字典信息/exp 導出結構檢查

 

1.檢查

SELECT * FROM ALL_SOURCE t WHERE T.OWNER = '要查詢用戶' AND t.TYPE = 'PACKAGE BODY'

select * from USER_SOURCE where type = 'PACKAGE'

 

2.exp 結構。檢查方法如下:

http://blog.csdn.net/ideality_hunter/article/details/52087012

 

oracle怎么導出function和procedure,即函數和存儲過程?

1通過在cmd中 使用exp,導出為dmp格 式。

2通過plsql工 具的Tools->export user objects,導出 為sql格式。狀態由紅變黑,表示導出成功了。

注 意不要導出owner、storage、privilege等。

 

3.關於存儲過程加密也是一種可能。文檔如下:

http://www.cnblogs.com/matrixworld/p/5446254.html

 

4.

請把procedure(HSDB_DB)發給我。

 

-> package 只可以到包的主體。

-> package bodies 可以看到包的bodys

 

->在PL/SQL developer 選擇 存儲過程,也會出現提示 是不是存儲過程。

 

 

 

 

 

 

 

5.存儲過程分析

 

https://www.cnblogs.com/dc-earl/articles/9260111.html

oracle存儲過程(一):簡單入門

 

一、定義

    存儲過程是一組為了完成特定功能的SQL語句,經編譯后存儲在數據庫中。

   點擊查看優缺點。

二、存儲過程簡單入門

    第一個存儲過程:打印hello word, my name is stored procedure內容

1
2
3
4
5
create or replace procedure myDemo01
as
begin
   dbms_output.put_line( 'hello word, my name is stored procedure' );
end;

create or replace procedure:關鍵字用來創建或覆蓋一個原有的存儲過程。

myDemo01:自定義的存儲過程的名字。
as:關鍵字。
    注:
        在存儲過程(PROCEDURE)和函數(FUNCTION)中沒有區別;

       在視圖(VIEW)中只能用AS不能用IS;

       在游標(CURSOR)中只能用IS不能用AS。

begin:關鍵字。
dbms_output.put_line('hello word, my name is stored procedure'); 輸出內容。
end;關鍵字。

    存儲過程的調用

1
2
3
4
5
6
7
8
declare
begin
   myDemo01;
end;
 
begin
   myDemo01; --在此處也可使用myDemo01();完成存儲過程的調用
end;
1
call myDemo01();--call 存儲過程名可完成調用,注意括號不能少
1
2
3
4
SQL> set serveroutput on --可以再command命令窗口執行
SQL> exec mydemo01 --下面是輸出結果
hello word, my name is stored procedure
PL/SQL procedure successfully completed

三種方式可以完成存儲過程的調用,分別為聲明declare關鍵字和不聲明declare關鍵字;call和Commond窗口執行命令。執行的結果如下所示

第二個存儲過程:變量聲明,賦值

1
2
3
4
5
6
7
8
9
create or replace procedure myDemo02
as
name varchar(10);--聲明變量,注意varchar需要指定長度
age  int ;
begin
   name:= 'xiaoming' ;--變量賦值
   age:=18;
   dbms_output.put_line( 'name=' ||name|| ', age=' ||age);--通過||符號達到連接字符串的功能
end;

第三個存儲過程:帶有參數的存儲過程

1
2
3
4
5
6
7
8
9
create or replace procedure myDemo03(name  in  varchar,age  in  int )
as
begin
   dbms_output.put_line( 'name=' ||name|| ', age=' ||age);
end;
 
begin
   myDemo03( 'xiaoming' ,18);
end;

  在調用存儲過程時,如果存儲過程沒有參數,調用時括號()可以不帶。

        存儲過程帶參數需要注意參數的傳遞參數時的一致性,按順序依次傳遞。

第四個存儲過程:實參形參問題

1
2
3
4
5
6
7
8
9
10
11
12
13
create or replace procedure myDemo04(name  in  varchar,age  in  int )
as
begin
   dbms_output.put_line( 'name=' ||name|| ', age=' ||age);
end;
 
declare
  name varchar(10);
  age  int ;
begin
   name:= 'xiaoming' ;
   age:=18;
   myDemo04(name=>name,age=>18);--此時不能myDemo04(name=>name,18),不能完成調用。
1
end;

注;在調用存儲過程時,=>前面的變量為存儲過程的形參且必須於存儲過程中定義的一致,而=>后的參數為實際參數。當然也不可以不定義變量保存實參

第五個存儲過程:in,out參數問題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
create or replace procedure myDemo05(name  out  varchar,age  in  int )
as
begin
        dbms_output.put_line( 'age=' ||age);
   select  'xiaoming'  into  name  from  dual;
end;
 
declare
  name varchar(10);
  age  int ;
begin
   myDemo05(name=>name,age=>10);
   dbms_output.put_line( 'name=' ||name);
end;

 注:in代表輸入,out用於輸出,參數默認類型是in類型。

第六個存儲過程:異常問題,執行結果見下圖

1
2
3
4
5
6
7
8
9
10
11
12
13
create or replace procedure mydemo0006
as
age  int ;
begin
   age:=10/0;
   dbms_output.put_line(age);
   exception when others   then
     dbms_output.put_line( 'error' );
end;
 
begin
   mydemo0006();
end;

 

總結:簡單學習oracle存儲過程,在oracle存儲過程(二)將對兩種循環以及增刪改查操作做進一步的認識。

作者:  i孤獨行者
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
 
分類:  oracle


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM