存儲過程多條件判斷
1. 存儲過程里需要多個判斷的時候怎麼寫最方便而不是寫多個if判斷
在查詢里判斷可以用 case when then else end 判斷,如果是判斷條件,要用if else來判斷,case when then else end 只能在查詢語句使用,並不能完全代替if else,如以下是case when then else end 的用法,你看看是否能用:
UPDATE USER SET BIRTHDAY=
(
CASE NAME
WHEN '張三' THEN '1949-10-1'
WHEN '李四' THEN '1997-7-1'
ELSE BIRTHDAY
END
)
where NAME in ('張三','李四');
2. sql 存儲過程多條件查詢
DECLARE @sign char(1)
DECLARE @SQL nvarchar(4000)
SET @sql='SELECT distinct isnull(pd.PatientGivenName,'') , isnull(pd.PatientFamilyName,'')+' '+isnull(pd.PatientMiddleName,'') FROM dbo.PatientDemographics pd where 1=1'
或
DECLARE @sign char(1)
SET @sign=','
DECLARE @SQL nvarchar(4000)
SET @sql='SELECT distinct isnull(pd.PatientGivenName,'')'+@sign+' isnull(pd.PatientFamilyName,'')+' '+isnull(pd.PatientMiddleName,'') FROM dbo.PatientDemographics pd where 1=1'
insert進我定義的一個表如下:
DECLARE @indextable TABLE(rowid INT IDENTITY(1,1),nid INT)
INSERT INTO @indextable(nid) --將符合的記錄插入到臨時表中
SELECT [ID]
FROM table1
Where 條件
3. SQL存儲過程多條件查詢問題
那你可以考慮寫臨時表啊。@count int output
set @sqlCount='select count(*) as a into ##XXXX from personJobs where '+@sql2
exec(@sqlCount)Select @count=a from ##XXXX
4. sql 存儲過程拼接超過長度怎麼處理 sql 存儲過程多條件查詢如果未傳值 則不執行該條件如何寫謝謝!
1.substr ,否則異常,要不是length(),if 超長,dbms_out....然後去日誌里看超長的要不要處理,如果自動執行,建個log表把超長的存進去;
2.在存儲過程開始的時候 把整個存儲過程最外層加上if 。。。。is not null then
5. mysql存儲過程的if判斷有多個條件該怎麼優化效率
這個應該不會太慢吧,我建議你看一下,你是不是循環做了太多次的插入/更新操作。
mysql默認的配置中,每次事務提交都要寫binlog和redo log,如果循環太多次——比如循環插入10w條記錄——就會非常慢。一般優化思路分兩種:
1 修改 sync_binlog為一個100-1000間的值,讓binlog每隔100-1000個事務後再寫一次;修改innodb_flush_log_at_trx_commit =2; 這么搞的好處是降低了寫log的次數和消耗的時間,缺點是,中間出錯的話,會丟失一部分的binlog和redolog導致無法通過他們來在出問題是恢復生產庫數據。
2 將所有的插入/更新操作放到一個事務中進行。這樣,顯然就只需要一次寫binlong和redolog咯。
6. SQL的多條件查詢的存儲過程問題
第一個文本:輸入材質。第二個文本框,輸入最小價格。第三個文本框:輸入最大價格。
然後按搜索按鈕string
pm,cz,min,max;(接收輸入的時候最大最小價格是string類型,資料庫里的價格是int類型的,存儲過程中要不要轉換,後台程序中怎麼轉換)默認下拉框是請選擇
輸入情況例如:
P1,C1,1,1000
(篩選符合條件的)
P1,C1,1,沒寫
請選擇,C1,沒寫,1000(意思是只有第二個和第四個有值)
根據輸入的條件顯示符合的信息(有一個條件就一個條件篩選,多個條件就多個條件來篩選)
問題:這樣的存儲過程應該怎麼寫(需要寫好注釋)補充:
表中欄位
ID,品名,材質,價格,備注,其他
價格是
int類型
剩下的都是nvarchar類型
7. SQL存儲過程中,if判斷語句中有多個判斷條件時,要用括弧括.嗎
如果像你這個只是單純的or的話,這兩種寫法應該都可以。
可是如果是有and又有or,那麼就需要你先把這個條件的先後分清楚了,這樣的情況,肯定需要括弧括清楚每一層。
8. SQL存儲過程中,if判斷語句中有多個判斷條
if(@rq2 is null or @rq2!=@a11) //多個判斷條件
begin
處理
end
else
begin
處理
end