什麼是Sql Server儲存過程

2021-10-06 10:47:01 字數 2734 閱讀 5779

儲存過程的概述

儲存過程是sql語句和控制語句的預編譯集合,儲存在資料庫裡,可由應用程式呼叫執行,而且允許使用者宣告變數、邏輯控制語句及其他強大的程式設計功能。儲存在sqlserver中,通過名稱和引數執行,也可以返回結果。對於儲存過程我更傾向於把他理解成方法。它裡面可以只有一條查詢語句,也可以包含一系列使用控制流的sql語句。

儲存過程的優點

1.模組化呈現設計

2.執行速度快,效率高

3.減少網路流量

4.具有良好的安全性

儲存過程的缺點點

1.不可移植性,每種資料庫的內部程式設計語法都不太相同,當你的系統需要相容多種資料庫時最好不要用儲存過程。

2.學習成本高,dba一般都擅長寫儲存過程,但並不是每個程式設計師都能寫好儲存過程,除非你的團隊有較多的開發人員熟悉寫儲存過程,否則後期系統維護會產生問題。

3.業務邏輯多處存在,採用儲存過程後也就意味著你的系統有一些業務邏輯不是在應用程式裡處理,這種架構會增加一些系統維護和除錯成本。

1.set ansi_nulls on:意思是空值null在匹配null條件的時候返回false,這種判斷null就需要使用 is null 或者 is not null

2.set ansi_nulls off:意思是空值null在匹配null條件的時候返回true 3.set quoted_identifier on:意思是如果內容與sqlserver的關鍵字相同,允許通過加雙引號、單引號的方式加以區分

4.set quoted_identifier off:意思是與sqlserver的關鍵字相同的,不允許加雙引號,也就是自定義的不允許與關鍵字重複

5.set nocount on:意思是不返回影響的行數

6.set nocount off:意思是要返回影響的行數

觸發器的編寫

–不帶引數的儲存過程

go

create

proc cp_select_books

asselect

*from books

--呼叫

exec cp_select_books

–帶引數的儲存過程

go

create

proc cp_select_books_byname

(@name nvarchar(50)

)asselect

*from books where name like

@name

--呼叫儲存過程

exec cp_select_books_byname 'js'

–帶輸入,輸入引數

–進行模糊查詢,返回記錄數,還要返回記錄

go

create

proc cp_select_book_bynameex

(@name nvarchar(50)

,@rowcount

int output)as

select

*from books where name like

'%'+

@name

+'%'

select

@rowcount

=count(*

)from books where name like

'%'+

@name

+'%'

--呼叫

go--定義乙個變數,來接受返回值@rowcount

declare

@rows

intexec cp_select_book_bynameex '建築'

,@rows

outprint

@rows

gocreate

proc cp_page

(@name nvarchar(50)

,--名稱

@pageindex

int,

--頁碼

@pagecount

int,

--每頁顯示多少條

@pagerows

intout

--輸出引數滿足條件的函式)as

select

top(

@pagecount)*

from books where id notin(

select

top(

(@pageindex-1

)*@pagecount

) id

from books where name like

'%'+

@name

+'%'

order

by id )

and name like

'%'+

@name

+'%'

order

by id

--滿足條件共多少條

select

@pagerows

=count(*

)from books where name like

'%'+

@name

+'%'

go--呼叫

declare

@pagerows

intexec cp_page '建築'

,@pageindex=2

,@pagecount

=1

什麼是過擬合?

過擬合很好理解,今天在知乎上看到eyounx這麼解釋,挺形象的,大致是這麼個說法 在機器學習中,我們提高了在訓練資料集上的表現力時,在測試資料集上的表現力反而下降了,這就是過擬合。過擬合發生的本質原因,是由於監督學習的不適定性。比如我們再學習線性代數時,給出n個線性無關的方程,我們可以解出來n個變數...

什麼是過擬合

過擬合很好理解,今天在知乎上看到eyounx這麼解釋,挺形象的,大致是這麼個說法 在機器學習中,我們提高了在訓練資料集上的表現力時,在測試資料集上的表現力反而下降了,這就是過擬合。過擬合發生的本質原因,是由於監督學習的不適定性。比如我們再學習線性代數時,給出n個線性無關的方程,我們可以解出來n個變數...

SQL SERVER 匯入EXCEL的儲存過程

1.先在查詢分析器裡執行 exec sp configure show advanced options 1 reconfigure exec sp configure ad hoc distributed queries 1 reconfigure 2.儲存過程 alter procedure d...