mysql> Create Procedure sp_Getnewtask(IN sdate datetime, IN edate datetime,IN sid int,IN tid int,OUT outmsg varchar(50))
-> begin
-> if not exists(
-> SELECT * FROM tbltask WHERE (startdate BETWEEN sdate AND edate)OR (enddate BETWEEN sdate AND edate) OR (sdate BETWEEN startdate AND enddate) OR (edate BETWEEN startdate AND enddate) OR Sid=Sid OR Tid=tid) then
-> set outmsg = 'ADDED SUCESSFULLY';
-> else
-> set outmsg = 'RECORD ALREADY PRESENT';
-> end if;
-> end $$
mysql> select * from tbltask;
| tblid | startdate | enddate | Sid | Lid |
| 1 | 2011-05-20 00:00:00 | 2011-05-29 00:00:00 | NULL | NULL |
1 row in set (0.00 sec)
它顯示爲記錄已經存在,甚至有沒有記錄存在於數據庫中,邏輯錯誤在SELECT查詢
如果我刪除的SID,從選擇查詢TID它工作正常, 請建議爲了一些想法CHK運行正確輸出
當我試圖調用過程, 它返回的,
mysql> call sp_Getnewtask('2011-05-20','2011-05-29',6,8,@outmsg);
-> select @outmsg;
-> $$
查詢OK,0行受到影響(0.00秒)
| @outmsg |
| RECORD ALREADY PRESENT |
1行中集(0.00秒)
但我的實際結果應該爲 '已添加成功地'
您在'WHERE'標準中使用'OR'或'Sid = Sid' - 這將永遠是真的!刪除'OR Sid = Sid OR Tid = tid',它應該可以工作。 – sgeddes 2014-09-22 13:10:44
但我想檢查一下sid和tid。 – BeginnerStack1 2014-09-22 13:14:25
將您的輸入變量重命名爲與表格中的字段名稱不同。所以inSid和inTid。知道您是否想要將變量與字段,字段到字段或變量與變量進行比較,引擎可能會遇到問題。我沒有看到表格中的TID。我看到LID ...所以這意味着TID輸入與TID輸入相比...是你想要的嗎? – xQbert 2014-09-22 13:19:13