2011-12-22 38 views
0

多插入Statment我想從用戶記錄在三個表 即SenderReceiverParcel的一個頁面,我寫的存儲過程它作爲,但是當我保存它。它提供了以下ERROR 我不能@P_ID如何寫一個存儲過程

瞭解ERROR IE不正確syntaxStore Procedure code

ALTER PROCEDURE dbo.ExSenderReceiveParcel 

@S_Name varchar(Max), 
@S_Country varchar(Max), 
@S_City varchar(Max), 
@S_StreetNo varchar(Max), 
@S_HouseNo varchar(Max), 
@S_Phone varchar(Max), 
@S_Mobile varchar(Max), 
@S_Email varchar(Max), 
@S_CreditCardNo varchar(Max), 
@S_PinCode varchar(Max), 

@R_Name varchar(Max), 
@R_Country varchar(Max), 
@R_City varchar(Max), 
@R_StreetNo varchar(Max), 
@R_HouseNo varchar(Max), 
@R_Phone varchar(Max), 
@R_Mobile varchar(Max), 
@R_Email varchar(Max), 

@P_Weight varchar(MAX), 
@P_Status varchar(MAX), 
@P_Location varchar(MAX), 
@P_Id numeric(18, 0) out 

AS 開始

DECLARE @S_Id numeric(18, 0), 
@R_Id numeric(18, 0) 

INSERT INTO Sender 
         (Name, S_Country, S_City, StreetNo, HouseNo, Phone, Mobile, Email, CreditCardNo, PinCode) 
VALUES  (
    @S_Name, 
    @S_Country, 
    @S_City, 
    @S_StreetNo, 
    @S_HouseNo, 
    @S_Phone, 
    @S_Mobile, 
    @S_Email, 
    @S_CreditCardNo, 
    @S_PinCode); 


    SET @S_Id = SCOPE_IDENTITY(); 

    INSERT INTO Receiver 
     (Name, R_Country, R_City, StreetNo, HouseNo, Phone, Mobile, Email) 
VALUES 
     (
      @R_Name, 
      @R_Country, 
      @R_City, 
      @R_StreetNo, 
      @R_HouseNo, 
      @R_Phone, 
      @R_Mobile, 
      @R_Email 
     ); 


     SET @R_Id = SCOPE_IDENTITY(); 

     INSERT INTO Parcel 
    (Weight, Status, Location, Sender_Id, Receiver_Id) 
VALUES  
(
    @P_Weight, 
    @P_Status, 
    @P_Location, 
    @S_Id, 
    @R_Id 
); 

SET @P_Id = SCOPE_IDENTITY(); 

Select @P_Id 

回答

0

你沒有一個END您的程序結束時的子句。

應該

CREATE PROC pSomething (@params) AS  
BEGIN..<code here>..END 

此外,您的類型應該被清理;如果數據庫中的所有內容都是VARCHAR(MAX),那麼在某些時候您會遇到一些空間問題。 SCOPE_IDENTITY也返回一個整數,而不是數值;這可能不是什麼大問題,但它是我的寵物:)

+0

感謝'@Stuart Ainsworth'當我執行它時,它也需要'@P_ID'的值作爲輸入 –