SQL Server 2008 R2 Insérer Procédure Stockée Syntaxe avec le Champ d'Identité
Bon Après-Midi,
J'ai écrit un très de base de la procédure stockée qui va être utilisé pour insérer des QuestionText et QuestionStatus dans les Questions de la table avec QuestionID int Clé Primaire définie comme ayant une Identité.
La syntaxe est comme suit:
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
Lorsque j'exécute la procédure stockée, je reçois l'erreur suivante:
Il y a plus de colonnes dans l'instruction INSERT que les valeurs spécifiées dans les VALEURS
la clause. Le nombre de valeurs dans la clause values doit correspondre au nombre de colonnes
spécifiée dans l'instruction INSERT.
Quelle est la bonne syntaxe à utiliser correctement l'insertion d'un enregistrement et de permettre QuestionID à l'auto-incrémentation à chaque insertion?
Merci beaucoup pour votre aide et vos conseils.
Mise À Jour De La Procédure Stockée Syntaxe
- Votre les Valeurs de la ligne est toujours la fermeture de parenthèse autour de chaque paramètre. Ils sont tous censés être dans une parenthèse séparés par des virgules de. Valeurs (@QuestionText, @QuestionStatus)
Vous devez vous connecter pour publier un commentaire.
Supprimer QuestionID et @@Identity + Valeurs (@QuestionText,@QuestionStatus)
SQL Server sait que QuestionID est un champ d'Identité et l'incrémenter.... 🙂
Si vous devez retourner l'Identité qui a été inséré ensuite créer un paramètre de sortie sur le PS et l'obtenir en appelant SCOPE_IDENTITY().
SET @QuestionID = SCOPE_IDENTITY()
Vous ne spécifiez pas l'identité des colonnes, et les valeurs ne sont pas censés être dans leur propre parenthèse.
c'est à dire sans l'identité champ spécifié.