導航:首頁 > 源碼編譯 > 存儲過程編譯兩次才成功

存儲過程編譯兩次才成功

發布時間:2024-07-02 06:23:51

A. 為什麼存儲過程執行速度比普通的SQL快而且減少網路流量

存儲過程所以快是因為他是預先編譯的,當然節省了編譯的時間。減少網路流量是指減少與客戶端之間的交互,在伺服器上執行運算,最後只把結果反給客戶端,所以流量少。

比如你查詢個內容,需要先查一個表,根據結果再查另外一個表。不用存儲過程你怎麼做呢?自然是先讀出那個表的內容來,然後在asp/asp.net/php里,用代碼生成一個語句再去查詢,這樣要往復2,3次。而用存儲過程就可以直接在伺服器上運算,只要一次來回就ok了,自然網路流量就減少

因為在存儲過程中的SQL語句是已經經過了語法檢查和編譯的,可以直接執行;而SQL總要先進行語法解析和編譯才能執行。另外對於網路執行的話,執行相同的任務,客戶端調用存儲過程的代碼傳輸量和直接執行SQL語句相比也要更少。

B. 如何編寫存儲過程

//創建存儲過程

CREATE PROCEDURE userData(

IN id INT

)

BEGIN

SELECT * from userdata WHERE userflag = id;

END;

其中IN是傳進去的變數;

drop procere userData;//銷毀這個存儲過程。

call userData(2) //調用存儲過程。

(2)存儲過程編譯兩次才成功擴展閱讀:

sql中的存儲過程及相關介紹:

CREATE PROCEDURE [擁有者.]存儲過程名[;程序編號]

[(參數#1,…參數#1024)]

[WITH

{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}

]

[FOR REPLICATION]

AS 程序行

其中存儲過程名不能超過128個字。每個存儲過程中最多設定1024個參數

(SQL Server 7.0以上版本),參數的使用方法如下:

@參數名數據類型[VARYING] [=內定值] [OUTPUT]。

每個參數名前要有一個「@」符號,每一個存儲過程的參數僅為該程序內部使用,參數的類型除了IMAGE外,其他SQL Server所支持的數據類型都可使用。

[內定值]相當於我們在建立資料庫時設定一個欄位的默認值,這里是為這個參數設定默認值。[OUTPUT]是用來指定該參數是既有輸入又有輸出值的,也就是在調用了這個存儲過程時,如果所指定的參數值是我們需要輸入的參數。

同時也需要在結果中輸出的,則該項必須為OUTPUT,而如果只是做輸出參數用,可以用CURSOR,同時在使用該參數時,必須指定VARYING和OUTPUT這兩個語句。

參考資料來源:網路-儲存過程



閱讀全文

與存儲過程編譯兩次才成功相關的資料

熱點內容
2355解壓軟體 瀏覽:817
php有多線程嗎 瀏覽:446
程序員的七 瀏覽:284
淘寶app的主頁為什麼是灰色的 瀏覽:885
安卓手機怎麼給抖音升級 瀏覽:594
matlab圖形命令 瀏覽:927
app中國國稅發票哪裡轉發 瀏覽:522
usb給單片機充電電路 瀏覽:445
java刪除上傳 瀏覽:748
泉城辦app如何辦理房產證 瀏覽:794
android動態改變高度 瀏覽:88
spss命令 瀏覽:491
雲終端伺服器連接 瀏覽:215
androidsqlite3加密 瀏覽:317
python判斷二維數組 瀏覽:770
於右任標准草書pdf 瀏覽:384
哪裡下載素材庫app 瀏覽:648
pc控制單片機 瀏覽:543
php並發多少 瀏覽:574
php中crypt 瀏覽:162