我正在编写一个存储过程,但是我找不到哪里出了问题,编译器根本不会给我任何错误说明。只是它说查询已完成,但出现错误。我看不到错误..?!
这将被用作更新两个表的存储过程,代码本身非常简单明了。
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[insertRankingData]
@domannamn [varchar](100),
@keyword [varchar](100),
@dagensdatum [Date],
@rankingposition [Decimal]
AS
DECLARE @domanID int
DECLARE @datumen date
IF(SELECT COUNT(*) FROM [dbo].[t_doman] WHERE doman_namn = @domannamn) = 0
BEGIN
INSERT INTO [dbo].[t_doman] (doman_namn)
VALUES(@domannamn)
SELECT @domanID = SCOPE_IDENTITY()
SELECT @todaysdate = GETDATE()
END
ELSE
BEGIN
SELECT @domanID = [doman_id]
FROM [dbo].[t_doman]
WHERE doman_namn = @domannamn
SELECT @todaysdate = GETDATE()
END
IF NOT @domanID IS NULL
BEGIN
IF NOT EXISTS (SELECT (ranking_date, ranking_keyword, ranking_id_doman)
FROM [dbo].[t_ranking]
WHERE ranking_id_doman = @domanID
AND ranking_keyword = @keyword
AND ranking_date = @datumen)
BEGIN
INSERT INTO [dbo].[t_ranking] (ranking_id_doman, ranking_date, ranking_position, ranking_keyword)
VALUES(@domanID, @todaysdate, @rankingposition, @keyword)
END
ELSE
BEGIN
UPDATE [dbo].[t_ranking]
SET ranking_position = @rankingposition
WHERE ranking_date = @todaysdate
AND ranking_keyword = @keyword
AND ranking_id_doman = @domanID
END
END发布于 2012-11-02 03:38:29
试试这个:
ALTER PROCEDURE [dbo].[insertRankingData]
@domannamn [varchar](100),
@keyword [varchar](100),
@dagensdatum [Date],
@rankingposition [Decimal]
AS
DECLARE @domanID int
DECLARE @datumen date
IF EXISTS(SELECT 1 FROM [dbo].[t_doman] WHERE doman_namn = @domannamn)
BEGIN
INSERT INTO [dbo].[t_doman] (doman_namn) VALUES(@domannamn)
SELECT @domanID = SCOPE_IDENTITY()
SELECT @todaysdate = GETDATE()
END
ELSE
BEGIN
SELECT @domanID = [doman_id] FROM [dbo].[t_doman] WHERE doman_namn = @domannamn
SELECT @todaysdate = GETDATE()
END
IF @domanID IS NOT NULL
BEGIN
IF NOT EXISTS (SELECT ranking_date, ranking_keyword, ranking_id_doman
FROM [dbo].[t_ranking]
WHERE ranking_id_doman = @domanID
AND ranking_keyword = @keyword
AND ranking_date = @datumen)
BEGIN
INSERT INTO [dbo].[t_ranking] (ranking_id_doman, ranking_date, ranking_position, ranking_keyword)
VALUES(@domanID, @todaysdate, @rankingposition, @keyword)
END
ELSE
BEGIN
UPDATE [dbo].[t_ranking]
SET ranking_position = @rankingposition
WHERE ranking_date = @todaysdate
AND ranking_keyword = @keyword
AND ranking_id_doman = @domanID
END
END希望这能有所帮助!!
https://stackoverflow.com/questions/13184230
复制相似问题