1. 程式人生 > >開發PL/SQl的子程式和包 儲存過程和函式

開發PL/SQl的子程式和包 儲存過程和函式



簡化指令碼
標準指令碼
工作環境
SQLPLUS Command Window
SQLPLUS Test Window
語法要求

declare begain exception end
定義變數
var 名 資料型別
名 資料型別
使用變數
:名

賦值語句
exec:名 :=表示式
名 :=表示式
呼叫方法
exec 方法名(引數)
call  方法名(引數)


儲存過程:子程式
create or replace procedure 名字
引數定義(名字 in out 資料型別 最後一個引數不用寫逗號)
is
  變數定義
begin


[exception]


end;
create or replace procedure testNow is
  str varchar2(50);
begin
  select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') into str from dual ;
dbms_output.put_line(str);
end testNow;




使用: 名字(引數) ;  exec  名字(引數);
Command Window 預設不開啟dbms_output的輸出  set serverout on;


 exec testNOW();
 set serverout on;








測試
begin
  -- Call the procedure
  testnow;
end;


2017-02-14 14:30:23


PL/SQL 如何進行測試?




create or replace procedure testBook 
  (au in varchar2) 
is
  str varchar2(50);
  cursor cur_bname(au_cur varchar2) is
    select * from busi_td_books t where t.author = au_cur;
begin
  for book in cur_bname(au) loop
    str := str || book.name || ',  ';
    
    end loop;
  dbms_output.put_line(str);
end ;




in  做輸入引數 只能從呼叫方傳遞值給儲存過程


out 做輸出引數 只能從儲存過程中傳遞值給呼叫方


in out 輸入輸出引數 值雙向傳遞
1、根據位置傳遞:只寫引數值,按照順序依次傳遞
2、根據名字傳遞:引數名 =>值 值可以是常量,也可以是變數












在簡易指令碼中測試


clear;
var bname varchar2(500);


exec :bname := '123456';


exec testbook(:bname);

同義詞:synonym
1、可以通過 使用者名稱.物件名 訪問指定使用者的指定物件
2、必須要有許可權
3、語法:
create or replace synonym abc for SYS.ACCESS$;
4、在synonym 前面加public,建立公共關鍵字,關鍵字的定義所有使用者都能使用。
create or replace public synonym abc for SYS.ACCESS$


Database-link dblink  


語法
  create datebase link 表連線變數名 
connect to 使用者名稱 identified by "密碼" 
using '機器名或者IP/例項名';


企業版 例項名字orcl 精簡版 XE
-- Create database link 
create public database link 22
  connect to 332 identified by "22"
  using '22';


create table 表名
as
使用:
select * from 表的名字@使用者名稱


注意:
   1、建立Database link的時候,用的使用者名稱必須是對方的資料庫的賬號和密碼
   2、機器名或者IP 例項名,也是對方的機器名 對方的IP 對方的例項名
   3、Dblink的許可權,取決於建立時的賬號密碼,但是最大也只能對對方的表和檢視進行增刪改查。
   4、與雙方的資料庫版本型別沒有關係,只要都是oracle就行。


































































































相關推薦

開發PL/SQl子程式 儲存過程函式

簡化指令碼 標準指令碼 工作環境 SQLPLUS Command Window SQLPLUS Test Window 語法要求 無 declare begain exception end 定義變數 var 名 資料型別 名 資料型別 使用變數 :名 名 賦值語句 ex

使用PL/SQL developer ORACLE 建立儲存過程、DBMS_JOB定時任務

由於需要對資料庫的一個表進行定時更新,之前想在後臺寫定時任務,後來發現數據庫的dems_job比較方便,之前並沒有接觸過PL/SQL和Oracle的定時任務Job,為了實現這一需求,於是在網上找了各種資料。 建立定時任務job之前首先需要有我們要操作的資料庫表,然後我們應該

sql相關:檢視儲存過程表結構

sql資料庫相關: 1,檢視儲存過程的內建函式:sp_helptexteg:sp_helptext 儲存過程名 2,提供一個儲存過程用於檢視資料庫表的新結構tbinfo create procedu

pl/sql建立並使用儲存過程

實現功能——從其他表中統計資料後,插入到另一張表by_train_count中: 參考連結:http://wzhiju.iteye.com/blog/1123157 create or replace procedure up_insert_by_train_count i

[Oracle]高效的PL/SQL程式設計(五)--呼叫儲存過程返回結果集

            Oracle.DataAccess.Client.OracleConnection oracleConnection1=new OracleConnection("data source=precolm2;user id=colmtest;password=colmtest");   

oracle檢視儲存過程函式,以及儲存過程引數,函式引數

1. 今天檢視系統程式碼時意識到系統中有太多的包以及它們的引數實在太多不容易記,所以想做一個查詢,把它們都查出來 2. 檢視系統中用到的包中所包含的儲存過程,函式等 SELECT U.PACKAGE_NAME AS 包名, U.OBJECT_NAME AS 方法 FRO

淺談 sqlserver mysql儲存過程函式的區別

其實我不太喜歡搞資料庫,平常也就是用用select、insert。這次公司要把資料庫從sqlserver遷到mysql,我也試著改了幾個儲存過程,在此總結。首先吐槽一句,sqlserver和 mysql差別還真大! 區別一:儲存過程入參 USE [LearningRep

PL/SQL進行debug 以及儲存過程

這兩天在學習PL/SQL,雖然和MySQL大部分sql語句相似,並且儲存過程等相關寫法也很相似。但是畢竟是新接觸的,難免會遇到各種初學者都會遇到的問題。本文主要講解當執行sql指令碼提示錯誤時,該如何去查錯誤以及debug技巧。提高開發效率。 包的寫法以及使用

oracle中pl/sql程式設計---儲存過程函式,觸發器,

1.pl/sql程式設計 pl/sql 指procedure language 過程化/sql. pl/sql 是oracle在標準的sql語句基礎上擴充套件的一種對oracle資料庫進行程式設計的的語言。 可以定義變數和常量,而且可以使用條件語句和迴圈語句。 2.為什麼要有pl/sql程式設計? 平時是通過

T-SQL 無引數的儲存過程的建立執行

1 use StudentManager 2 go 3 if exists(select * from sysobjects where name='usp_ScoreQuery') 4 drop procedure usp_ScoreQuery 5 go 6 create procedur

sql語句---儲存過程函式觸發器

儲存過程、函式和觸發器的原理: 實際上都是使用Transact-SQL語言編寫的程式。儲存過程和函式需要顯式呼叫才能執行,而觸發器則在滿足指定條件時自動執行。 1、儲存過程 1.1 定義 儲存過程是Transact-SQL語句的預編譯集合,這些語句在一個名稱下儲

SQL SERVER 儲存過程事務(通過兩個值自動計算第三個值並更新)

SQL SERVER 儲存過程和事務 前提:再實際業務中,有一個需求,即是根據A欄位和B欄位計算C欄位(批量的)考慮用的事務和WHILE迴圈,做成儲存過程,然後作業,定時10分鐘更新一次。其中A欄位的值,又是根據其他4個欄位為一組求的平均值。 那麼該儲存過

[oracle]pl/sql in/out變數的使用過程過程的呼叫

--in/out 型別變數的使用 以及過程中呼叫過程,獲取out型別的返回值 --建一張表books --簡單過程一 插入一條記錄 createtable books(bookid number,bookname varchar(50),pubhouse varchar(50));    --簡

SQL Server中的CLR程式設計——用.NET為SQL Server編寫儲存過程函式

1、開啟VS2010 新建專案->類庫->AdditionalMD5 2、1.建立類(函式)方法->FunctionMD5    2.建立類(儲存過程)方法->GetMD5 3、然後在SQL SERVER 資料庫中操作 1.目標資料庫例項需要啟

使用T-SQL語句檢視資料庫的儲存過程表結構資訊

 /*****************************************************************************************************************************//********

Oracle下查詢儲存過程的語句

查詢某些包:select * From all_objects where object_type = 'PACKAGE' and object_name like '%DRB%' 查詢某些儲存過程: select * From all_objects where obj

SQL SERVER 儲存過程自定義函式

一、功能描述。 需要把 participants 轉換成中文顯示,相關資訊的表如下: 二、自定義函式,作用是解釋用 ;分割的參與者編號,如下: USE [schedule] GO /****** Object:  UserDefinedFunction [dbo].

使用JDBC連線資料庫並且呼叫儲存過程執行SQL語句

JDBC呼叫資料庫: package com.hthk.iisz.util; import java.sql.Connection; import java.sql.DriverManager; public class SqlServerConnectionzUtil

使用instantclient_11_2 PL/SQL Developer工具連接oracle 11g遠程數據庫

指向 就會 tools asc admin xid tca 遠程機器 names 1,先到Oracle站點下載Instant Client : http://www.oracle.com/technology/global/cn/software/tech/oci/ins

PL/SQL編程—

都是 好處 ack complete .com 封裝 src 編寫 需要 1、PLSQL 中的包就相當於java中的package,主要好處有(1)防止命名汙染,(2)功能統一,(3)允許重載,(4)可以隱藏核心代碼,(5)最重要的就是斷開依賴鏈。 2、對於一個程序需要