-5
我正在製作一個存儲過程來了解將要安排維護的未來日期,但桌面上有很多機器,但過程僅調用一個。如何使參數在存儲過程中讀取多個值?
的聲明,我使用的是它來調用每臺機器的數據並做週期要知道在給定的
@name varchar(50),
@FechaHasta datetime,
@Result DATETIME = null OUTPUT)
AS
BEGIN
DECLARE @JOBNO NVARCHAR(50)
SELECT @JOBNO = JOBNO FROM PMMASTER INNER JOIN LABORMP
ON PMMASTER.PMID = LABORMP.PMID INNER JOIN PMMSCHEDULE
ON PMMASTER.PMID = PMMSCHEDULE.PMID
where EMPLOYEENAME = @name AND PMMSCHEDULE.CYCLETYPE =2 and PMMSCHEDULE.SETTING2 IS NOT NULL and PMMSCHEDULE.SETTING1 IS NOT NULL
DECLARE @DATELAST DATETIME
SELECT @DATELAST = DATELAST FROM PMMSCHEDULE INNER JOIN PMMASTER
ON PMMASTER.PMID = PMMSCHEDULE.PMID INNER JOIN LABORMP
ON PMMASTER.PMID = LABORMP.PMID
WHERE JOBNO in (@JOBNO) and EMPLOYEENAME [email protected]
DECLARE @SETTING1 INT
SELECT @SETTING1 = SETTING1 FROM PMMSCHEDULE INNER JOIN PMMASTER
ON PMMASTER.PMID = PMMSCHEDULE.PMID INNER JOIN LABORMP
ON PMMASTER.PMID = LABORMP.PMID
WHERE JOBNO in (@JOBNO) AND EMPLOYEENAME = @name
DECLARE @SETTING2 INT
SELECT @SETTING2 = SETTING2 FROM PMMSCHEDULE INNER JOIN PMMASTER
ON PMMASTER.PMID = PMMSCHEDULE.PMID INNER JOIN LABORMP
ON PMMASTER.PMID = LABORMP.PMID
WHERE JOBNO in (@JOBNO) AND EMPLOYEENAME = @name
DECLARE
@DateFirst INT
SELECT @DateFirst = @@DateFirst
/* Today */
DECLARE
@TodaysDate DATETIME
-- Finding today's date after resetting the time to midnight
SELECT @TodaysDate = CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 101), 101)
/* Todays WeekDay */
DECLARE
@TodaysWeekDay INT
SELECT @TodaysWeekDay = DATEPART(dw, @TodaysDate)
/* Selected WeekDay */
DECLARE
@WeekDay INT
SELECT @WeekDay = CHARINDEX('1', @Setting2)
/* Schedule Date */
DECLARE
@ScheduleDate DATETIME
-- Find the starting schedule date. If the schedule date is in a previous
-- week, adjust to the most recent week in the schedule
SELECT @ScheduleDate = @DATELAST
-- Adjust scheduled date to closest possible week day
SELECT @ScheduleDate = DATEADD(dd, @WeekDay - DATEPART(dw, @ScheduleDate), @ScheduleDate)
-- Add cycles until a possible date is met
WHILE (@ScheduleDate < @TodaysDate)
SELECT @ScheduleDate = DATEADD(wk, @Setting1, @ScheduleDate)
IF (@ScheduleDate <= @DATELAST)
SELECT @ScheduleDate = DATEADD(wk, @Setting1, @ScheduleDate)
SELECT @Result = @ScheduleDate
SELECT @Result AS RESULTADO
SET DATEFIRST @DateFirst
WHILE(@Result <@FechaHasta)
BEGIN
IF(@Result <@FechaHasta)
SELECT @Result = DATEADD(WK, @Setting1, @Result)
SET IDENTITY_INSERT [00TblFecha] ON
INSERT INTO dbo.[00TblFecha](idFecha,jobno,fecha)VALUES(3,@JOBNO,@Result)
SET IDENTITY_INSERT[00TblFecha] OFF
print @Result
end
因此,您發佈了一段包含while循環的文本。這裏真的有問題嗎?如果是這樣,你需要解釋你在問什麼。作爲一個方面說明,沒有理由需要使用這樣的插入while循環。 –
對不起,我的問題是如何讓存儲過程使用多臺機器來實現循環? –
這沒有任何意義。請記住,我們不知道你的系統,我們不知道你的項目是什麼,我們看不到你的屏幕。我們需要處理的是對這個問題的非常模糊的描述。 –