SQL儲存過程例子

2021-09-24 19:42:56 字數 2073 閱讀 9842

儲存過程呢,學校裡學習的都是簡單的。這裡是我在工作的時候寫的儲存過程,貼出來,其中公司相關我都***代替了

(注:這個例子可以算是動態sql的例子了,寫死的是靜態sql,這個很靈活的傳入引數的是動態sql,靜態的一次編譯多次呼叫具有安全性。動態的需要次次編譯,強大但有安全隱患)  

use[xx

]go/****** object: storedprocedure [dbo].[onetable] script date: 2018/1/12 9:41:21 *****

*/set ansi_nulls on

goset quoted_identifier on

goalter

procedure

[dbo

].[onetable

]@tablename

nvarchar(50)as

begin

declare

@sql

nvarchar(1000

)select

@sql

=isnull(@sql+'

,','')+

quotename(name) from syscolumns where id=

object_id(@tablename) and name not

in ('

date

','time')

declare

@sqlstr

varchar(4000

)set

@sqlstr='

select a.datetime,b.nodeid,a.supplynum,301 as factoryid from

(select rtrim(convert(varchar,replace([date],''/

'',''-

'')))+

''''

+ ltrim(convert(varchar,[time])) [datetime] ,p.supplynum,p.supplier

from

( select top 1 *

from '+

@tablename+'

)tunpivot

(

supplynum for supplier in

('+@sql+'

)) p) a inner join ***x.dbo.*** b on a.supplier=b.tagname'--

----insert單張表的資料到***

insert ***x.dbo.*** exec(@sqlstr)--

----delete

declare

@mindatestr

varchar(50

)

set@mindatestr

=convert(varchar(100),getdate()-

3,20

)

delete

from ***x.[

dbo].*** where

datetime

<

@mindatestr

end

現在我需要只插入20分鐘以內的資料,我頓時慌了,動態sql無法取裡面的時間怎麼辦~~我這是蠢成豬的表現了~~

經過同事的開導我才恍然大悟,在動態sql裡面加乙個時間判斷不就好了嘛。。。

and

datediff(minute,a.datetime,getdate())<

20

像這樣。。。人蠢了。。。攔都攔不住。。。

2018.8.4日更新

在做資料同步的時候也可以使用這個儲存過程,很好用。有乙個問題,你在同步資料的時候,要做乙個時間的增量判斷。不要整張表整張表的資料插入同步。應該是只同步需要更新的資料。

and datetime>  dateadd(minute,-1,getdate())

例如上面的sql語句,我同步的那個表的資料是一分鐘更新一次的,那我就一分鐘同步一次。同步的時候只同步上一分鐘的資料。這樣就保證了你同步的只是最新的資料。

sql儲存過程簡單例子

例1 create proc proc stu sname varchar 20 pwd varchar 20 asselect from ren where sname sname and pwd pwd go檢視結果 proc stu admin admin 例2 下面的儲存過程實現使用者驗證的...

sql儲存過程幾個簡單例子

例1 create proc proc stu sname varchar 20 pwd varchar 20 as select from ren where sname sname and pwd pwd go檢視結果 proc stu admin admin 例2 下面的儲存過程實現使用者驗證...

儲存過程例子

alter proc futurema updageorderdatasdistinguishresult asdeclare connectionstring nvarchar 256 declare server nvarchar 256 declare uid nvarchar 256 dec...