2010-07-16 8 views
1

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

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 
       [email protected] 
       where [email protected] 

    --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 

Edit: Déplacé informations Mise à jour affichée en réponse à la question

Oops mon post est pas ce genre un échec. Il est possible de joindre cette chaîne de 3 sql dans une procédure stockée?

Scénario: { Ce que je dois faire dans ma forme est que je vais entrer le numéro de série à txtserial.text en utilisant le select sql il affichera serialnumber,partnumber 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 série et une partie est correcte puis utilisez SQL Upate.

{ 
Update Table1 SET 
       [email protected], 
       [email protected], 
       [email protected] 

       where [email protected] 
} 


Then insert serialnumber, using sql insert to another table. 
{ 
INSERT INTO Table2 (SerialNumber,DateCreated,Createdby) 
       VALUES 
       (@Serial,@date,@username) 
} 

Quelque chose de likethis. «)

+1

@SerialNumber D'où cela vient-il? – iBiryukov

+0

Suite à votre mise à jour à la question, vous ne pouvez pas mélanger votre flux de travail d'application et de procédure stockée comme ça, mais je ne sais toujours pas vraiment ce que vous faites. Avez-vous déjà choisi la partie Select? –

Répondre

0

Oups mon poste n'est pas un échec.

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

Scénario:

Ce que je dois faire dans ma forme est que je vais entrer le numéro de série à txtserial.text en utilisant la sélection sql il affichera serialnumber, et le statut partnumber sur lblserial.text, lblpartnumber.text et lblstatus.text.

Andi comparera:

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

pour mon gestionnaire d'erreurs.

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

Ensuite, si elles sont égales alors:

Je mettrai à jour mon statut de cbostatus.text si série et une partie est correcte, puis utilisez la mise à jour sql. Ensuite, insérez le numéro de série, en utilisant l'insertion sql dans une autre table.

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

quelque chose comme ça.

7

Vous avez une virgule pendard

@Status varchar(50), 
AS 

et le nom embardées entre @Serial et @SerialNumber sont ceux-ci destinés à être 2 paramètres différents?

également quel est le but de cette ligne?

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

Actuellement, il suffit de renvoyer un ensemble de résultats de 3 colonnes à l'application appelante. que 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)?

1

Oui, vous pouvez exécuter 3 instructions SQL à l'intérieur d'une procédure stockée. Vous voulez sans doute déclarer des variables locales dans votre sproc pour maintenir les résultats intermédiaires, à savoir

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 insérer plus tard @partnumber, @partnumber test, retour @partnumber etc. Je ne comprends pas tout à fait ce que vous vouloir 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'objectif un peu plus.

Je vous recommande d'ignorer les trucs de l'interface utilisateur 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 temps à partir de deux connexions différentes. Faites en sorte que tout fonctionne à votre satisfaction dans votre environnement SQL. Puis revenez à l'interface utilisateur.

+0

Ok monsieur .. Je vais suivre vos conseils .. j'étudie n-tier et sql donc j'ai beaucoup plus de questions à demander de l'aide. Je vais juste ajouter des mises à jour si je l'ai fait aussi bien. – Crimsonland