SQL 碼農 建立不輸入引數的儲存過程的寫法

2021-06-06 10:26:44 字數 1379 閱讀 4353

要求:在where中引數上加入function判定,實現沒有傳值的情況下無視單元格輸出資料;

--格式如下--

exec procedure @pcid,@year,@month

gocreate procedure ...

@pcid int,

@year int,

@month int

as begin

select [..],[..],...

from [...]

where 1=1

and [...].[libby_isnull_return_decimal]('=',year(...),@year)=1

and [...].[libby_isnull_return_decimal]('=',month(...),@month)=1

endgo

create function [libby_isnull_return_decimal] 

(@type varchar(10),

@o_1 decimal(18,3),

@o_2 decimal(18,3)

)returns int

asbegin

-- 空值為1,不為空判斷

declare @re_set as int

set @re_set=1

if(@type='=')

if(@o_1 = @o_2)set @re_set=1 else set @re_set=0

if(@type='>')

if(@o_1 > @o_2)set @re_set=1 else set @re_set=0

if(@type='>=')

if(@o_1 >= @o_2)set @re_set=1 else set @re_set=0

if(@type='<')

if(@o_1 < @o_2)set @re_set=1 else set @re_set=0

if(@type='<=')

if(@o_1 <= @o_2)set @re_set=1 else set @re_set=0

if(@o_1 is null) set @re_set=1

if(@o_2 is null) set @re_set=1

return @re_set

endgo

注:function內我寫了當二個判斷其一為null便可通過的寫法(以公司的資料結構設計和),請結合自身公司的情況來編寫;

SQL 碼農 字元組合式的T SQL

這是公司的乙個辦法,可以判斷引數null值,無視這個where控制 但現在還有更好的 exec procedure year,month,area gocreate procedure year int,month int,area varchar 10 asbegin declare sqlbas...

建立乙個只有輸入引數的儲存過程

create table loginuser id int primary key identity,name varchar 20 password varchar 100 create procedure proc user name varchar 20 password varchar 10...

SQL 碼農 老前輩留下最好的禮物CASE

這個寫法是以前公司走掉前輩留下 在乙個客戶裡的資料包表看到的好寫法 對我來說剛剛入行不久是最好的禮物 select case when name 毛毛西 and sys id in 2,3,4 then 第一結果 when name 陳小花 then 第二結果 when name 陳玲玲 and s...