首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server使用AND和IF?

SQL Server使用AND和IF?
EN

Stack Overflow用户
提问于 2012-11-02 03:34:38
回答 1查看 42关注 0票数 0

我正在编写一个存储过程,但是我找不到哪里出了问题,编译器根本不会给我任何错误说明。只是它说查询已完成,但出现错误。我看不到错误..?!

这将被用作更新两个表的存储过程,代码本身非常简单明了。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-02 03:38:29

试试这个:

代码语言:javascript
复制
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

希望这能有所帮助!!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13184230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档