私はストアド プロシージャの使用に慣れていないので、2 つの質問に出くわしました。
まず、なぜ私はこれを行うことが許可されていないのですか? エラーメッセージは次のとおりです。
オペランド型の衝突: date は int と互換性がありません
コード :
@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
結果を完全なデータセットとして返すにはどうすればよいですか? 2 つの変数に保存する代わりに?または、複数の行を保持できますか?
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