2010-07-16 42 views
1

你好,我是新的創建存儲過程,你可以幫我如何做到這一點。 錯誤: 關鍵字'AS'附近的語法不正確。 必須聲明標量變量@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 
       [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 

編輯:感動更新的信息發佈作爲回答質疑

哎呀我的帖子是不是那種一個小姐。 有可能在一個存儲過程中加入這3個sql字符串?

場景: { 什麼我在我的形式做的是,我將通過選擇SQL輸入序列號txtserial.text它會顯示serialnumber,partnumberstatuslblserial.text,lblpartnumber.textlblstatus.text。 我會比較:

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

爲我的錯誤處理程序。

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

那麼它們是否相等,則: 我會更新我從cbostatus.text狀態如果串行和部分是正確的,那麼使用SQL upate。

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

       where [email protected] 
} 


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

東西likethis。 「)

+1

@SerialNumber 這是從哪裏來的? – iBiryukov 2010-07-16 00:43:30

+0

在對問題進行更新後,您無法像這樣混合應用程序和存儲過程工作流程,但我仍然不清楚您正在做什麼。你有選擇部分已經工作? – 2010-07-16 01:48:15

回答

0

糟糕我的帖子是不是那種善意。

可以在一個存儲過程中加入這3個sql字符串嗎?

場景:

我有我的形式做的是,我會輸入序列號通過選擇SQL它會顯示在lblserial.text,lblpartnumber.text SERIALNUMBER,部分號碼和狀態txtserial.text和lblstatus.text。

安迪會比較:

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

爲我的錯誤處理程序。

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

那麼它們是否相等,則:

我會更新我從cbostatus.text狀態如果串行和部分是正確的,那麼使用SQL更新。

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

然後插入serialnumber,使用sql插入到另一個表。

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

這樣的事情。

7

你在這裏

@Status varchar(50), 
AS 

流氓逗號和名字@Serial@SerialNumber之間蹣跚的這些意圖是2個不同的參數?

還什麼是此行的目的是什麼?

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

當前它只是將3列結果集發送回調用應用程序。它打算做什麼(它似乎不符合下面的評論,似乎意味着這是一種檢查)?

1

是的,您可以在一個存儲過程中執行3條SQL語句。你可能想聲明的存儲過程裏面的一些局部變量來保存中間結果,即

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 

然後您可以稍後插入@partnumber,測試@partnumber,返回@partnumber等我不太明白你想做;好像你主要想根據序列號查找一個partnumber,但是你也想做一些獨特性測試。如果你能更清楚地闡明目標,這將會有所幫助。

我建議您暫時忽略用戶界面的東西。寫下一些很好的清理存儲過程來封裝事務,並且即使從兩個不同的連接同時觸發,也會做正確的事情。讓你的SQL環境中的所有工作都得到滿足。然後回到用戶界面。

+0

好的先生..我會按照你的意見..我正在學習n層和sql,所以我有更多的問題要求幫助。我只會添加更新,如果我也這樣做。 – Crimsonland 2010-07-16 02:36:45