儲存過程和自定義函式的優缺點
儲存過程和使用者定義函式都是“SQL語句組成的子程式,用以封裝程式碼以便重複使用”。但區別也是顯而易見的。簡單說,儲存過程功能強大,但呼叫不便,使用者函式正相反。
使用者定義函式的優點:
可以在SQL語句中呼叫,直接使用返值,從而形成複雜的SQL應用。
儲存過程則只能用execute命令呼叫,用輸出引數的到返回的結果。
使用者定義函式的缺點:
能在函式中使用的語句有嚴格限制:
- 不支援create、drop等DDL命令
- insert、delete、update只能用在臨時表上
- 不支援動態SQL
- 不支援“不確定”的函式,比如常用的getdate。不確定函式是指輸入引數相同,返回結果可能不同的函式。全部不確定函式如下表
@@CONNECTIONS @@TOTAL_ERRORS
變通辦法:
要解決使用者函式的種種限制,可以巧妙運用使用者函式呼叫儲存過程。
相關推薦
儲存過程和自定義函式的優缺點
儲存過程和使用者定義函式都是“SQL語句組成的子程式,用以封裝程式碼以便重複使用”。但區別也是顯而易見的。簡單說,儲存過程功能強大,但呼叫不便,使用者函式正相反。 使用者定義函式的優點: 可以在SQL語句中呼叫,直接使用返值,從而形成複雜的SQL應用。 儲存過程則只能用ex
MySQL儲存過程和自定義函式、Navicat for mysql、建立儲存過程和函式、呼叫儲存過程和函式的區別
與你相遇 好幸運 可我已失去為你淚流滿面的權利 但願在我看不到的天際 你張開了雙翼 1 MySQL儲存過程和函式 過程和函式,它們被編譯後儲存在資料庫中,稱為永續性儲存模組(Persistent Stored Module,PSM),可以反覆呼叫,執行速度快。 1.1 儲存過程 儲存過程是由
Oracle儲存過程和自定義函式
概述 PL/SQL中的過程和函式(通常稱為子程式)是PL/SQL塊的一種特殊的型別,這種型別的子程式可以以編譯的形式存放在資料庫中,併為後續的程式塊呼叫。 相同點: 完成特定功能的程式 不同點:是否用return語句返回值。 舉個例子: cre
SQL SERVER 儲存過程和自定義函式
一、功能描述。 需要把 participants 轉換成中文顯示,相關資訊的表如下: 二、自定義函式,作用是解釋用 ;分割的參與者編號,如下: USE [schedule] GO /****** Object: UserDefinedFunction [dbo].
Hive中建立和呼叫儲存過程及自定義函式
前面的文章《在Hive中實現儲存過程–HQL/SQL》中介紹瞭如何使用HPL/SQL在Hive中實現儲存過程,執行類似Oracle PL/SQL的功能。 一般的業務場景是資料開發人員開發好一個儲存過程,然後週期性的呼叫,傳入不同的引數即可。 本文繼續介紹如何在Hive中利
Mysql中儲存過程與自定義函式的區別
建立儲存過程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristi
MySQL儲存過程/儲存過程與自定義函式的區別
儲存過程:簡單的說,就是一組SQL語句集,功能強大,可以實現一些比較複雜的邏輯功能,類似於JAVA語言中的方法;ps:儲存過程跟觸發器有點類似,都是一組SQL集,但是儲存過程是主動呼叫的,且功能比觸發器更加強大,觸發器是某件事觸發後自動呼叫;有哪些特性:有輸入輸出引數,可以宣
oracle儲存過程及自定義函式(儲存函式)初學
1.儲存過程和儲存函式的主要區別 儲存函式可以通過return返回函式值;儲存函式可以在SQL語句內部呼叫;儲存函式較儲存過程有諸多限制;儲存過程用select語句返回記錄集,儲存函式使用表變數返回記錄集。 2.儲存過程和儲存函式的建立 儲存過程的
MySQL觸發器、儲存過程、自定義函式、檢視 常用SQL
1.建立一個userinfo表新增記錄時的觸發器 將新增日誌加入到userinfolog 2.建立一個向userinfo表新增記錄的儲存過程 3.根據userinfo表的出生日期欄位 我們將建立一個簡單算得年齡的自定義函式 4.建立一個userinfo的檢視 呼叫年齡函式
存儲過程和自定義函數的區別
tab idt 函數 操作 ron 執行 pan span tex 存儲過程 自定義函數 功能復雜 針對性強 對表操作 多個返回值 一個返回值 獨立執行 可以作為其他SQL語句的組成部分出現 存儲過程和自定義函數的區別
java:集合框架(ArrayList儲存字串和自定義物件並遍歷泛型版)
A:案例演示 * ArrayList儲存字串並遍歷泛型版 import java.util.ArrayList; import java.util.Iterator; import com.
【mybatis】mybatis呼叫sqlserver儲存過程和表值函式
儲存過程和表值函式的區別 最簡單的區別是儲存過程是pr開頭的,而儲存過程是fn開頭的,表值函式返回的是一個表結構的結果。如果mybatis用呼叫儲存過程的方式去呼叫表值函式,就會丟擲以下的異常: exc
List集合儲存字串和自定義物件並遍歷(for迴圈和迭代)
package list; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * :List集合儲存字串並遍歷?(迭代器和普通for)
Java_基礎—ArrayList儲存字串和自定義物件並遍歷泛型版
package com.soar.generic; import java.util.ArrayList; import java.util.Iterator; import com.soar.be
Oracle 儲存過程中自定義異常
參考: 1.進入pl/sql測試視窗 2.執行語句 declare empname varchar2(255); customize_exp EXCEPTION; --
檢視內建函式和自定義函式的效率
<html><head><title>study</title><meta http-equiv="content-type" content="text/html;charset=gb2312" /><script type="text/ja
hive內建函式和自定義函式的使用
1.hive函式的分類 內建函式和自定義函式 1.1、內建函式 1、查詢有哪些內建函式: show functions;2、查詢某個內建函式怎麼使用desc function extended concat;1.2、自定義函式 分三大類:1、UDF : user defin
除錯SQL Server的儲存過程及使用者定義函式
1、在查詢分析器中除錯 查詢分析器中除錯的步驟如下:SQL 2000查詢分析器--左連的物件瀏覽器(沒有的話按F8)--物件項中--右鍵除錯的儲存過程--除錯--輸入引數(必須輸入所有的引數,包括預設值/輸出引數--點選執行--出現一個浮動工具條--上面有單步執行,斷點設定
MySQL基礎篇(03):系統和自定義函式總結,觸發器使用詳解
本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、系統封裝函式 MySQL 有很多內建的函式,可以快速解決開發中的一些業務需求,大概包括流程控制函式,數值型函式、字串型函式、日期時間函式、聚合函式等。以下列出了這些分類中常用的函式。 1、控制流程函式 case...when 根據值判斷返
學會使用MySQL中自定義函式和儲存過程
一、快速瞭解什麼是儲存過程和函式? 儲存過程和函式是事先經過編譯並存儲在資料庫中的一段 SQL 語句的集合,呼叫儲存過程 和函式可以簡化應用開發人員的很多工作,減少資料在資料庫和應用伺服器之間的傳輸,對 於提高資料處理的效率是有好處的。 在對儲存過程或函式進行操作時,需要