当前位置:  开发笔记 > 数据库 > 正文

SQL 2005存储过程返回值或创建它(如果它不存在)

如何解决《SQL2005存储过程返回值或创建它(如果它不存在)》经验,为你挑选了1个好方法。

我遇到了存储过程的问题(SQL 2005).

我有一个叫tbrm_Tags两列的表,TagIDTagName.我想将TagName值传递给存储过程,然后我想:

    检查是否Tagname存在以及是否确实返回TagID

    如果Tagname不存在,我希望它插入表中并返回TagID.

这是我正在使用的存储过程:

  @TagID int = null,
  @TagName varchar(50)  

AS

DECLARE @returnValue int

  BEGIN
  IF EXISTS (SELECT * FROM tbrm_Tags WHERE TagName = @TagName)
  BEGIN

  SELECT

  TagID

  FROM tbrm_Tags

  WHERE TagName = @TagName

END
ELSE
BEGIN
IF NOT EXISTS (SELECT * FROM tbrm_Tags WHERE TagName = @TagName)

   INSERT INTO tbrm_Tags

  (
    TagName

  )
  VALUES
  (
    @TagName

      )

  SELECT @returnValue = @@IDENTITY

  END
  END

  RETURN @returnValue

我不能让select语句返回TagIDTagname存在.



1> Marc Gravell..:

注意:不要使用@@IDENTITY- 它受触发器的影响; 总是用SCOPE_IDENTITY()

我可能会这样做:

DECLARE @returnValue int

SELECT @returnValue = TagID
FROM tbrm_Tags
WHERE TagName = @TagName

IF @returnValue IS NULL
BEGIN
     INSERT tbrm_Tags(TagName)
     VALUES (@TagName)

     SET @returnValue = SCOPE_IDENTITY()
END

RETURN @returnValue

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有