1. 程式人生 > >儲存過程,job總結

儲存過程,job總結

商業規則和業務邏輯可以通過程式儲存在oracle中,這個程式就是儲存過程。

儲存過程是SQL, PL/SQL, JAVA 語句的組合, 它使你能將執行商業規則的程式碼從從你的應用程式中移動到資料庫。這樣的結果就是,程式碼儲存一次但是能夠被多個程式使用

要建立一個 過程物件(procedural object),必須有 CREATE PROCEDURE 系統許可權。如果這個過程物件需要被其他的使用者schema 使用,那麼你必須有 CREATE ANY PROCEDURE 許可權。

執行 procedure 的時候,可能需要excute許可權。或者EXCUTE ANY PROCEDURE 許可權。

如果單獨賦予許可權,如下例所示:  grant  execute on MY_PROCEDURE  to Jelly

呼叫一個儲存過程的例子: execute MY_PROCEDURE( 'ONE PARAMETER');

PROCEDURE 和 FUNCTION 的區別。 function有返回值,並且可以直接在Query中引用function和或者使用function的返回值。

 PACKAGE 是function,procedure,variables 和sql 語句的組合。package允許多個procedure使用同一個變數和遊標。

建立 procedure的語法:

CREATE [ OR REPLACE ] PROCEDURE [ schema.]procedure
  [(argument [IN | OUT | IN OUT ] [NO COPY] datatype
    [, argument [IN | OUT | IN OUT ] [NO COPY] datatype]...
  )]
[ authid { current_user | definer }]
{ is | as } { pl/sql_subprogram_body |
language { java name 'String' | c [ name, name] library lib_name
}]

sql 程式碼
  1. CREATEPROCEDURE sam.credit (acc_no IN NUMBER, amount IN NUMBER) AS
  2. BEGIN
  3. UPDATE accounts    
  4. SET balance = balance + amount    
  5. WHERE account_id = acc_no;    
  6. END;  

可以使用 create or replace procedure 語句, 這個語句的用處在於,你之前賦予的excute許可權都將被保留。

IN, OUT, IN OUT 用來修飾引數。IN 表示這個變數必須被呼叫者賦值然後傳入到PROCEDURE進行處理。OUT 表示PRCEDURE 通過這個變數將值傳回給呼叫者。IN OUT 則是這兩種的組合。

authid代表兩種許可權: 定義者許可權(difiner right 預設),執行者許可權(invoker right)。定義者許可權說明這個procedure中涉及的表,檢視等物件所需要的許可權只要定義者擁有許可權的話就可以訪問。執行者許可權則需要呼叫這個procedure的使用者擁有相關表和物件的許可權。

相關推薦

儲存過程job總結

商業規則和業務邏輯可以通過程式儲存在oracle中,這個程式就是儲存過程。 儲存過程是SQL, PL/SQL, JAVA 語句的組合, 它使你能將執行商業規則的程式碼從從你的應用程式中移動到資料庫。這樣的結果就是,程式碼儲存一次但是能夠被多個程式使用。 要建立一個 過程物

oracle資料庫觸發器儲存過程定時器jobpackage的基本用法總結

--定時器job語法引數解析 使用Submit()過程,工作被正常地計劃好。 這個過程有五個引數:job、what、next_date、interval與no_parse。 PROCEDURE Submit ( job       OUT binary_ineger, W

視圖觸發器事物儲存過程函數流程控制

tro then database lap data rtrim( -s sun .com 一視圖 建表 create database o; use o; create table teacher( tid int primary key auto_increment

Oracle儲存過程例項分析總結(程式碼)

1.儲存過程結構 1.1 第一個儲存過程 ? 1 2 3 4

VS2013 c++連結資料庫應用儲存過程向資料庫中寫入資料

// ConsoleApplication1.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include "iomanip" using namespace std; #import "c:\Program Files\Common Files\S

py呼叫oracle的儲存過程注意procedure的out取值方式

#!/usr/bin/env python import sys import csv import cx_Oracle import codecs import os os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK'

資料庫儲存過程觸發器遊標函式

MySQL5 中添加了儲存過程的支援。  大多數SQL語句都是針對一個或多個表的單條語句。並非所有的操作都這麼簡單。經常會有一個完整的操作需要多條才能完成。  儲存過程簡單來說,就是為以後的使用而儲存的一條或多條MySQL語句的集合。可將其視為批檔案。雖然他們的

mysql建立儲存過程模擬插入200萬用戶

公司需要建立模擬使用者測試大資料,百度建立儲存過程模擬插入資料下面是sql程式碼 CREATE PROCEDURE test()  begin  declare var int; declare a int; declare mobile bigint; SET var

執行儲存過程報錯提示 找不到儲存過程

原因: SQL Server 客戶端, 在連線到 SQL Server 資料庫以後。會自動讀取 資料庫的 資料字典資訊。也就是 當前資料庫,有哪些表/欄位/檢視/儲存過程等基礎資訊。儲存在客戶端的記憶體裡面。這樣。當你在客戶端輸入 SQL 語句的時候,輸入 表名字.會自動彈出 這個表的欄位列表,

springMVC呼叫儲存過程entity檔案寫法

<!--廣告任務申請,被稽核通過--> <select id="approveAdTask" statementType="CALLABLE" parameterType="java.util.Map"> {call approveAdTask( #{sn,mod

查詢資料庫中當前使用者下的所有表儲存過程檢視觸發器

user_objects是oracle字典表的試圖,他包含了通過DDL建立的所有物件。表,試圖,索引。。等 all_table,  dba_table  , user_table   同理 Select object_name From user_obj

使用Navicat 建立mysql儲存過程實現日期加流水號序列

                                      &nb

Oracle學習筆記 -分頁儲存過程自增

Oracled 的欄位自增,查詢,遊標的返回,儲存過程。 1,自增(觸發器) //還有一個條件需要增加一個佇列 create or replace TRIGGER MYSYSTEM.CBOUNCEID BEFORE INSERT ON MYSYSTEM.BOUNCERECORD

檢視儲存過程觸發器

檢視的特點 檢視只是一種邏輯物件,是一種虛擬表,它並不是物理物件,因為檢視不佔物理儲存空間,在檢視中被查詢的表稱為檢視的基表,大多數的select語句都可以用在建立檢視中 優點:集中使用者使用的資料,掩碼資料的複雜性,簡化許可權管理以及為向其他應用程式輸出而重新組織資料等等 語法

Mysql的儲存過程Mybatis對儲存過程的呼叫

                        mysql儲存過

Oracle 儲存過程觸發器事務

部落格園 首頁 新隨筆 聯絡 管理 訂閱 隨筆- 75  文章- 0  評論- 0  Oracle 儲存過程,觸發器,事務,鎖 1.1儲存過程   儲存過程是一種命名的PL/SQL程式塊,他可以有引數,也可以有若干

Mysql如何寫一個儲存過程同時向兩張表裡插入資料有入參

兩篇文章參考 https://www.cnblogs.com/phpper/p/7361841.html https://www.cnblogs.com/mark-chan/p/5384139.html     回答“: https://segment

MYSQL 使用儲存過程結合遊標迴圈插入資料demo

建立遊標 CLOSE釋放遊標使用的所有內部記憶體和資源,因此在每個遊標不再需要時都應該關閉 CREATE PROCEDURE processdemo() BEGIN DECLARE product_i

C# 後臺呼叫儲存過程獲取DataTable

 public System.Data.DataTable GetDataBy_storedproc2()         {             #region _adapter             var _adapter = new System.Data.Sq

MySql儲存過程傳陣列引數

專案中遇到批量資料的處理,使用hibernate的出來太慢,修改為儲存過程。 第一版修改為應用迴圈調儲存過程,發現效果不理想。可能是頻繁的開啟session和關閉。 第二版想法為,把所有引數傳入到儲存過程,迴圈引數為一個數組,mysql儲存過程裡沒有split函式, 取