Comment faire face à la procédure stockée?

Bonjour, je suis nouveau dans la création de procédure stockée pouvez-vous m'aider à faire cela. Erreur: Syntaxe incorrecte près du mot key 'AS'. Doit déclarer la variable scalaire @Serial.

CREATE PROCEDURE sp_SIU -- Add the parameters for the stored procedure here @Serial varchar(50), @Part varchar(50), @Status varchar(50), AS -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. /*SET NOCOUNT ON;*/ -- Insert statements for procedure here --where in my form if i enter serial number it will show select values Select SerialNumber,PartNumber,Status from Table1 where SerialNUmber = @Serial --Then if is correct it will Update Status on combobox Update Table1 SET Status=@Status where SerialNumber=@SerialNumber --then Insert Serial Number,Parnumber to Table 2 DECLARE @Count int select @Count = Count(SerialNumber) from Table1 WHERE SerialNumber = @Serial IF @Count = 0 BEGIN INSERT INTO Table2 (SerialNumber,PArtNumber) VALUES (@Serial, @Part) END RETURN @Count RETURN 

Modifier: les informations mises à jour ont été déplacées en réponse à la question

Oups, mon message n'est pas si gentil. Il est possible de joindre cette string de 3 sql dans une procédure stockée?

Scénario: {Ce que je dois faire dans mon formulaire, c'est que je vais entrer le numéro de série à txtserial.text en utilisant le select sql il montrera numéro de série, numéro de txtserial.text et status sur lblserial.text,lblpartnumber.text et lblstatus.text . Et je comparerai:

 txtserial.text == lblserial.text txtpartnumber.text == lblpartnumber.text 

pour mon gestionnaire d'erreurs.

 { Select SerialNumber,PartNumber,Status from Table1 where SerialNUmber = @Serial } 

Ensuite, s'ils sont égaux, alors: Je mettrai à jour mon statut de cbostatus.text si la série et la partie sont correctes puis utiliser sql upate.

 { Update Table1 SET Status=@Status, Modifiedby=@username, DateModified=@Date where SerialNumber=@Serial } Then insert serialnumber, using sql insert to another table. { INSERT INTO Table2 (SerialNumber,DateCreated,Createdby) VALUES (@Serial,@date,@username) } 

quelque chose comme ça. ")

Vous avez une virgule voyous ici

  @Status varchar(50), AS 

et les noms entre @Serial et @SerialNumber sont-ils destinés à être deux parameters différents?

Aussi quel est le but de cette ligne?

  Select SerialNumber,PartNumber,Status from Table1 where SerialNUmber = @Serial 

Actuellement, il va simplement renvoyer un jeu de résultats à 3 colonnes à l'application appelante. Est-ce que c'est ce qu'il est destiné à faire (il ne semble pas correspondre au commentaire suivant qui semble impliquer qu'il est censé être une sorte de vérification)?

Oui, vous pouvez exécuter 3 instructions SQL dans une procédure stockée. Vous voulez probablement déclarer certaines variables locales dans votre sproc pour contenir les résultats intermédiaires, c'est-à-dire

 CREATE PROCEDURE BLAHBLAH @SerialNumber VarChar(50) AS BEGIN DECLARE @partnumber varchar(50); SELECT @partnumber = partnumber FROM Table WHERE serialnumber = @SerialNumber; ... SELECT @partnumber; --- return as recordset RETURN @partnumber; --- return as return value END 

Ensuite, vous pouvez insert plus tard @partnumber, test @partnumber, return @partnumber etc. Je ne comprends pas très bien ce que vous voulez faire; On dirait que vous voulez surtout chercher un numéro de série basé sur un numéro de série, mais vous voulez aussi faire des tests d'unicité. Cela aiderait si vous pouviez clarifier l'objective un peu plus.

Je vous recommand d'ignorer les trucs de l'interface user pour le moment. Ecrivez-vous de belles procédures stockées propres qui encapsulent la transaction et feront la bonne chose même si elles sont déclenchées en même time à partir de deux connections différentes. Faites en sorte que tout fonctionne à votre satisfaction dans votre environnement SQL. Puis revenez à l'interface user.

Oups, mon message n'est pas si gentil.

Il est possible de joindre cette string de 3 sql dans une procédure stockée?

Scénario:

Ce que je dois faire dans mon formulaire, c'est que je vais entrer le numéro de série à txtserial.text en utilisant le select sql il montrera serialnumber, partnumber et le statut sur lblserial.text, lblpartnumber.text et lblstatus.text.

Et je comparerai:

  • txtserial.text == lblserial.text
  • txtpartnumber.text == lblpartnumber.text

pour mon gestionnaire d'erreurs.

 { Select SerialNumber,PartNumber,Status from Table1 where SerialNUmber = @Serial } 

Alors s'ils sont égaux alors:

Je mettrai à jour mon statut de cbostatus.text si la série et la partie sont correctes alors employez la mise à jour de SQL.

 { Update Table1 SET Status = @Status, Modifiedby = @username, DateModified = @Date where SerialNumber = @Serial } 

Ensuite, insérez serialnumber, en utilisant sql insert dans une autre table.

 { INSERT INTO Table2(SerialNumber, DateCreated, Createdby) VALUES(@Serial, @date, @username) } 

quelque chose comme ça.