2011-04-13 46 views
0

提交換擋願望(工人)我是新來的,在處理與SQL Server驗證在SQL

我需要的,如果工人說,他不能超過4個輪班工作檢查SQL添加PROC 1周SQL將打印messege ..

我有這樣的事情:

create proc proc_eror_worker_request 

@max_ccwshift int output, 
@bla int output 

as 

set @max_ccwshift=4 
if exists(select*from dbo.Request having count(dbo.Request.Date_CantWork)>@max_ccwshift) 
    begin 
     print 'wokers submited litle shifts'     
     set @bla=count(dbo.Request.Date_CantWork) 
     select @bla 
     from dbo.Request 

     return 1 
    End 
     Else 
      begin 
      print 'everything is OK!' 
      return 0    
     End 
Go 

我在這個新的..所以請幫助我

在此先感謝..

+0

說實話,你在這裏提供的東西看起來並不像有效的SQL。需要與集合函數一起使用。 「set @bla =」這一行沒有任何意義。您不是按工作人員ID或按日期篩選。 – 2011-04-13 13:16:18

+0

我通常會建議先寫查詢,然後將其封裝在存儲過程中。你的查詢將需要一堆參數 - 不必擔心這些,直到你的查詢運行良好。查詢JNK建議將會有所幫助 - 你還需要爲一週添加一個過濾器,因爲現在你正在搜索爲所有不能工作的請求。 – 2011-04-13 13:28:31

回答

0

我認爲你是接近你以後的樣子。你試過運行過嗎?

A 主要問題我看到的是,你沒有任何選擇你正在尋找哪個工人。我猜想應該有一些像過濾器

WHERE Worker_ID = xxx

否則要檢查所有的工人在表中會得到一些奇怪的結果。其他

一個問題,我看到的是在這裏:

print 'wokers submited litle shifts'     
set @bla=count(dbo.Request.Date_CantWork) 
select @bla 
from dbo.Request 

我猜,會返回一個語法錯誤。它應該是:

print 'wokers submited litle shifts'     
select @bla=count(Date_CantWork) 
from dbo.Request 

如果您在寫入時運行它,您會得到什麼?

+0

Msg 4104,Level 16,State 1,Procedure proc_eror_worker_reqwest,Line 9 無法綁定多部分標識符「dbo.Request.Date_CantWork」。這是恐怖。我將嘗試運行您的代碼並添加工號 – liron 2011-04-13 13:19:30

+0

這是因爲您只需引用該「COUNT」函數內的字段。聽起來你對SQL有很多瞭解。我強烈建議你將它分解成更小的部分,單獨手動運行,然後將它們放回到一個proc中。除非你確定所有部件都能正常工作,否則你不會建造一輛汽車。 – JNK 2011-04-13 13:21:48

+0

這是一個很好的建議:) ...我不喜歡SQL但它是重要的,我猜...無論如何,現在它正在運行...但我嘗試這樣做:declare @bla int exec proc_eror_worker_reqwest 325789657 select '55分以下的學生數量是''作爲'學生數',@bla作爲'答案' 去,我得到這個錯誤:消息201,級別16,狀態4,程序proc_eror_worker_reqwest,行0 程序或功能'proc_eror_worker_reqwest'需要參數'@max_ccwshift',它沒有提供。 (1 row(s)affected) – liron 2011-04-13 13:32:49