1. 程式人生 > >SQL儲存過程筆記

SQL儲存過程筆記

一、概述

  儲存過程(Stored Procedure)是一組為了完成特定功能的SQL 語句集,經編譯後儲存在資料庫。使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。

      優點:                                                                                                                                                                           1.由於儲存過程是預編譯的,在首次執行一個儲存過程時,查詢優化器對其進行分析、優化,並給出最終被存在系統表中的執行計劃,

不像解釋執行的SQL語句那樣在提出操作請求的時候才進行語法分析和優化工作,因而執行效率高,它提供了在服務端快速執行SQL語句的有效途徑。

  2.儲存過程降低了客戶機和伺服器之間的通訊量,客戶機上的應用程式只要通過網路向伺服器發出儲存過程的名字和引數,就可以讓RDBMS執行許多條SQL語句,並執行資料處理,只有最中結果才返回客戶端。

  3.儲存過程允許標準組件式程式設計,儲存過程在被建立以後可以在程式中被多次呼叫,而不必重新編寫該儲存過程的SQL語句。而且資料庫專業人員可隨時對儲存過程進行修改,但對應用程式原始碼毫無影響(因為應用程式原始碼只包含儲存過程的呼叫語句),從而極大地提高了程式的可移植性。

二、基本語法

1.變數宣告

   declare @variable int  或者 @variable int 

   多個變數的宣告 declare @variable int, @va vachar(10),....     

   區別:declare的含義是定義一個儲存過程中使用的變數,而不加declare的是儲存過程需要傳入的引數,下面一個具體的例項可以看得更清楚:

--建立儲存過程
create procedure sl_procedure
@va int  --引數宣告
as 
declare @variable int    --變數宣告
set @variable
=22 --變數賦值 select * from Albums where ArtistId=@va --執行儲存過程 exec sl_procedure 12 --12 為傳入的引數

2.變數賦值:  

set @variable=22 --變數賦值

   變數賦值時變數前必須加set

  3.條件控制語句:

if(條件)
    begin
    --執行語句塊
    end
else
    begin
    --執行語句塊
    end

3.迴圈控制語句

while(條件)
    begin
    --執行語句塊
    end
  

三、例項分析

1.帶輸入引數的儲存過程

--根據專輯名 查詢藝術家

--建立儲存過程
Create procedure ArtistNameOut1
@albumTitle varchar(20)  --引數宣告
as 
select ar.ArtistName from Artists ar
join Albums al
on ar.ArtistId=al.AlbumId
where al.AlbumTitle=@albumTitle
GO
--執行儲存過程
--引數傳遞方式1,多個引數以 , 號隔開
exec ArtistNameOut1 @albumTitle='Worlds' -- 引數傳入
--引數傳遞方式2,
exec ArtistNameOut1 'Worlds' -- 引數傳入

2.帶輸出引數的儲存過程

--根據專輯名 輸出藝術家
--建立儲存過程
Create procedure ArtistNameOut
@albumTitle varchar(20),  --引數宣告
@artistName varchar(20) output --輸出引數:output標識
as 
select @artistName=ar.ArtistName from Artists ar
join Albums al
on ar.ArtistId=al.AlbumId
where al.AlbumTitle=@albumTitle
GO
--執行儲存過程
declare @returnName varchar(20)
exec ArtistNameOut 'Worlds',@returnName output  -- 引數傳入
select @returnName

    呼叫儲存過程時需要再宣告一個變數,作為output引數

    關於呼叫儲存過程傳遞引數過程中遇到的錯誤,貼個圖記錄一下:

  多個引數,引數傳遞方式必須統一

相關推薦

SQL儲存過程筆記

一、概述   儲存過程(Stored Procedure)是一組為了完成特定功能的SQL 語句集,經編譯後儲存在資料庫。使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。       優點:                                              

mysql筆記三-----sql儲存過程、事務的隔離級別和sql各查詢的區別、防黑

儲存過程 ※※儲存過程※※※ 定義: create procedure 過程名(引數) begin 多條sql語句 end 呼叫: call 過程名(實參) 例項1--無參的儲存過程: △小細節:要把預設的語句結束“;”號改成其它如“$$”,

sql儲存過程基礎語法

  MySQL 5.0 版本開始支援儲存過程。 儲存過程(Stored Procedure)是一種在資料庫中儲存複雜程式,以便外部程式呼叫的一種資料庫物件。 儲存過程是為了完成特定功能的SQL語句集,經編譯建立並儲存在資料庫中,使用者可通過指定儲存過程的名字並給定引數(需要時)

SQL儲存過程中分頁

</pre><pre name="code" class="sql">ALTER proc [dbo].[GetGoodsLsit] ----分頁條件 @StartIndex varchar(20), @PageSize varchar(20), ----排序條件

SQL儲存過程分頁與遊標使用

儲存過程: CREATE procedure p_splitpage    @sql nvarchar(4000), --要執行的sql語句  @page int=1,    --要顯示的頁碼 @pageSize int,&n

oracle12C資料庫JSON的應用 --PL/SQL儲存過程中JSON解析應用篇

最近有些專案在資料庫oracle中使用到json格式的資料互動,對於oracle12以上的版本都支援JSON格式資料的使用,剛剛接觸的猿們可以到上一篇oracle資料庫使用json的簡單入門,最好參考官方的API文件關於oracle官方API文件對JSON的支援; 下面就比較詳細的說一下,關

oracle儲存過程筆記

儲存過程是oracle資料庫中的過程化程式語言(progress language),可以用來編寫包含sql語句的程式。 塊結構: 儲存過程可劃分為稱為塊的結構,一般包含如下結構: [DECLARE declaration_statements

SQL儲存過程,函式

儲存過程和函式的區別: 儲存過程可以沒有返回值,函式必須有返回值; // 語法 CREATE PROCEDURE 儲存過程名(引數列表) BEGIN 儲存過程體; END 引數模式 IN , OUT

PCB MS SQL 儲存過程(CLR) 實現Json轉DataTable表的方法

 一.準備需轉為DataTable的json字串         原json字串資料 [{"TechName":"ECN","TechNo":"EC_01","id":"1"},{"TechName":"流程指示","TechNo":"PI

10、PL/SQL儲存過程

子程式是執行特定任務的程式單元/模組。 這些子程式組合起來形成更大的程式。這種做法被稱為“模組化設計”。 子程式可以被稱為呼叫程式的另一個子程式或程式呼叫。 可以在以下幾個地方中建立一個子程式 - 在模式(schema)級別中 一個程式包中 在PL/SQL塊中 在模式

儲存過程筆記

什麼是儲存過程 儲存過程(Stored Procedure)是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是

資料庫系統概論05-動態SQL&儲存過程&函式

動態SQL 使用SQL語句主變數 EXEC SQL BEGIN DECLARE SECTION; const char *stmt="CREATE TABLE test(a int);"/*SQL語句主變數,內容是建立表的SQL語句*/ EXEC SQL END

sql 儲存過程

目錄 一、儲存過程概念 1.概念 儲存過程是存放在資料庫伺服器上的預先定義與編譯好的T-SQL語句集合,是一個獨立的資料庫物件。 2.特點 實現了模組化程式設計。 儲存過程具有對資料庫立即訪問的功能。 使用儲存過程可以加快程式的執行速度。 使用儲存過

【Oracle】PL/SQL 儲存過程 顯式遊標、隱式遊標、動態遊標

  【Oracle】PL/SQL 顯式遊標、隱式遊標、動態遊標 2013年06月17日 09:02:51 AlphaWang 閱讀數:13009更多 個人分類: 【Database】 在PL/SQL塊中執行SELECT、INSERT、DELET

PL/SQL儲存過程操作例項及其講解說明

建立過程過程使用CREATE OR REPLACE PROCEDURE語句建立,使用CREATE OR REPLACE PROCEDURE語句簡化語法如下:CREATE[OR REPLACE]PROCEDURE procedure_name [(parameter_name

SQL儲存過程實現批量插入資料

1,單條插入 INSERT INTO time_by_day   (time_id, the_date, the_year, month_of_year, quarter,day_of_month) VALUES ('1101', '1999-10-1', '1999', '10', 'Q4','1'

SQL 儲存過程裡呼叫另一個儲存過程

由於建立了一個儲存過程,並且要在另一個儲存過程裡呼叫這個儲存過程所以在網上找了一下相關的程式碼,現在總結一下,防止以後還會用到 由於這次我寫的儲存過程只需要返回一個求和的結果,所以我使用了output

SQL 儲存過程回滾

--建立表 create table Course  ( No INT, Name nvarchar(10), Comment nvarchar(10)) --插入資料 insert into course values('332','語言在','234') insert

PL/SQL儲存過程示例及圖解

這幾天專案任務中需要建立一個儲存過程介面,以方便後續的呼叫,由於之前沒怎麼在Oracle PL/SQL中新建過儲存過程,所以花了些時間去看,結果發現通過百度到的都是些儲存過程的知識而非PL/SQL中的新建-檢視結果的過程。所以決定寫一篇圖文結合的文章來講述PL/

SQL儲存過程生成一個指定長度的隨機字串

if exists(select name from sysobjects where name='xsGetRandChar') drop proc xsGetRandChar go -- ==