我對使用存儲過程有點新,所以我偶然發現了兩個問題。SQL Server:如何將幾行返回到一個變量
首先爲什麼我不允許這樣做?錯誤消息說:
操作數類型衝突:日期與詮釋
代碼不兼容:
@time date OUTPUT
SELECT @time = ranking_date
FROM [dbo].[t_ranking]
WHERE ranking_date <= DATEDIFF(day, @todaysDateminusthirty, @todaysdate)
AND ranking_keyword = @keyword
AND ranking_id_doman = @domainID
勇往直前我怎麼能回到我的結果作爲一個完整的數據集?而不是保存到兩個變量?或者他們可以擁有多行?
ALTER PROCEDURE [dbo].[fetchRankingData]
-- Add the parameters for the stored procedure here
@domannamn [varchar](100),
@keyword [varchar](100),
@rankingen [decimal](6,2) OUTPUT,
@time date OUTPUT
AS
DECLARE @domainID int
DECLARE @todaysDateminusthirty datetime
DECLARE @todaysdate datetime
BEGIN
SET NOCOUNT ON;
IF EXISTS(SELECT 1 FROM [dbo].[t_doman] WHERE doman_namn = @domannamn)
BEGIN
set @todaysdate = getdate()
set @todaysDateminusthirty = DATEADD(day,-30,@todaysdate)
SELECT @domainID = doman_id FROM [dbo].[t_doman] WHERE doman_namn = @domannamn
IF EXISTS(SELECT 1 FROM [dbo].[t_ranking] WHERE ranking_id_doman = @domainID AND ranking_keyword = @keyword)
BEGIN
SELECT @rankingen = ranking_position FROM
[dbo].[t_ranking] WHERE ranking_keyword = @keyword
AND ranking_id_doman = @domainID
SELECT @time = ranking_date FROM
[dbo].[t_ranking] WHERE ranking_date <= DATEDIFF(day,@todaysDateminusthirty,@todaysdate) AND ranking_keyword = @keyword
AND ranking_id_doman = @domainID
END
END
END
1)你會得到這個異常,因爲你試圖比較一個日期時間字段和int,因爲'DATEDIFF(day..'返回一個int。 –
「我對使用存儲過程有點新鮮」 - 你看過Books在線? –
@MitchWheat是的,因此,我設法得到了這麼多!但他們不包括返回多個變量在一個...也許我應該去一個數據集,包含許多變量;) – 8bitcat