Как написать Многостраничный Устав в одной процедуре магазина - PullRequest
0 голосов
/ 22 декабря 2011

Я хочу получить REcord от пользователя на одной странице из трех таблиц, т. Е. Sender Receiver и Parcel, и я записываю для него процедуру сохранения, как при сохранении.Это дает следующее ERROR Я не могу понять ERROR то есть Неправильно syntax при @P_ID

Store 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

1 Ответ

0 голосов
/ 22 декабря 2011

У вас нет предложения END в конце вашей процедуры.

должно быть

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

Кроме того, ваши типы должны быть убраны; если все в вашей базе данных VARCHAR (MAX), то в какой-то момент вы столкнетесь с некоторыми проблемами пространства SCOPE_IDENTITY также возвращает целое число, а не числовое значение; это может быть не так уж важно в этом контексте, но это моя любимая мозоль :)

...