1
DECLARE @tag VARCHAR(MAX)
DECLARE @TagID as INT;
DECLARE @ID as INT;
DECLARE tag_cursor CURSOR
FOR
SELECT tagname FROM #temptag  
 FOR READ ONLY
  OPEN tag_cursor
    FETCH NEXT FROM tag_cursor INTO @tag
       WHILE @@FETCH_STATUS = 0
          BEGIN              

            IF EXISTS (SELECT TOP 1 * FROM Tag WHERE TagName=@tag) 
                   BEGIN
                       print 1;
                   END 
                      print 2;
                      /* INSERT INTO Tag
                       SELECT @tag FROM #temptag 
                       SELECT @TagID = SCOPE_IDENTITY(); 

                       print @TagID*/
                FETCH NEXT FROM tag_cursor INTO @tag
                     END

           CLOSE  tag_cursor   
           DEALLOCATE tag_cursor      

私のストアド プロシージャでは、テーブル内の値を検索しています。値が既に存在する場合は、値を挿入しないでください。

だから私は書いた

      IF EXISTS (SELECT TOP 1 * FROM Tag WHERE TagName=@tag) 
               BEGIN
                   print 1;
               END 
                  print 2;
                  /* INSERT INTO Tag
                   SELECT @tag FROM #temptag 
                   SELECT @TagID = SCOPE_IDENTITY(); 

                   print @TagID*/
            FETCH NEXT FROM tag_cursor INTO @tag
                 END

問題: 実行すると、print1 と print 2 の両方の値が出力されます

誰かがエラーを修正するのを手伝ってくれますか

4

1 に答える 1

1

ELSEブロックするつもりだったのかな?

IF EXISTS (SELECT TOP 1 * FROM Tag WHERE TagName=@tag) 
BEGIN
    print 1;
END
ELSE
BEGIN 
    print 2;
    /* INSERT INTO Tag
       SELECT @tag FROM #temptag 
       SELECT @TagID = SCOPE_IDENTITY(); 

       print @TagID*/
END
于 2013-11-05T23:33:40.730 に答える