1

こんにちは、

私は、QuestionTextとQuestionStatusをQuestionsテーブルに挿入するために使用される非常に基本的なストアドプロシージャを作成しました。QuestionIDintプライマリキーはIdentityを持つように設定されています。

構文は次のとおりです。

CREATE PROCEDURE InsertNewQuestion 
-- Add the parameters for the stored procedure here
@QuestionText varchar(200), @QuestionStatus bit
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
INSERT into Questions
(QuestionText,QuestionStatus) 
Values
(@QuestionText),(@QuestionStatus)
END
GO

ストアドプロシージャを実行すると、次のエラーが発生します。

INSERTステートメントには、VALUES句で指定された値よりも多くの列があります。VALUES句の値の数は、INSERTステートメントで指定された列の数と一致する必要があります。

レコードを適切に挿入し、挿入のたびにQuestionIDが自動インクリメントできるようにするために使用する正しい構文は何ですか?

あなたの助けと指導に感謝します。

更新されたストアドプロシージャの構文

4

4 に答える 4

4

QuestionIDを削除し、@@ Identity +値は(@ QuestionText、@ QuestionStatus)である必要があります

INSERT into Questions
(QuestionText,QuestionStatus) 
Values
(@QuestionText,@QuestionStatus)

SQL Serverは、QuestionIDがIDフィールドであることを認識しており、それをインクリメントします。...:-)

挿入されたIDを返す必要がある場合は、SPにoutパラメーターを作成し、SCOPE_IDENTITY()を呼び出して取得します。

SET @QuestionID = SCOPE_IDENTITY()

于 2011-04-18T20:08:26.633 に答える
1

ID列を指定しないでください。また、値が独自の括弧で囲まれていることは想定されていません。

INSERT into Questions
(QuestionText,QuestionStatus) 
Values
(@QuestionText, @QuestionStatus)
于 2011-04-18T20:09:22.137 に答える
1
INSERT into Questions (QuestionText,QuestionStatus)  
Values (@QuestionText,@QuestionStatus)

つまり、IDフィールドが指定されていません。

于 2011-04-18T20:10:14.210 に答える
0
CREATE PROCEDURE SPWITHPARAMETER_AND_RETURN_VALUE
  (
    @EMPID INT,
    @IDVAL INT,   
    @RETURNVALUE INT =0 OUT
  )
  AS 
    DECLARE @COUNT INT
  BEGIN
  SELECT @COUNT=COUNT(*) FROM JOINTABLE WHERE EMPID=@EMPID AND IDVAL=@IDVAL
    IF(@COUNT >0)
      BEGIN

           SET @RETURNVALUE = 1;
                             PRINT @RETURNVALUE    
            RETURN @RETURNVALUE
              END
         ELSE
       BEGIN
            SET @RETURNVALUE = 1;
                              PRINT @RETURNVALUE
            RETURN @RETURNVALUE
                        END
  END
于 2012-05-21T04:18:56.293 に答える