2014-12-11 2 views
0

Я пытаюсь вставить идентификаторы другой таблицы (в Company и Bank) в uBankID и uCompanyID из EndUser таблицы и BankID в Company стола на INSERT.хранимых процедур Cross Таблица Ввод ID

Независимо от того, что я делаю, требуемые поля не заполняются, что я делаю неправильно? Я взглянул на оператор inline select в ID, чтобы попытаться схватить его, но не мог понять его, и он не скомпилировался.

Переменные все присутствуют и правильны в бэкэнд и анализируются через все, кроме этих идентификаторов, поскольку с C# ничего не происходит неправильно. Я думаю, что что-то не так с моим SQL, тем более, что я честен новые для хранимых процедур.

Любая помощь была бы принята с благодарностью.

Код (похудела):

CREATE PROCEDURE [ProcedureInsert] 
    @Title nvarchar(10), 
    @FirstName nvarchar(50), 
    @LastName nvarchar(50), 
    @Organisation nvarchar(50), 
    @Address nvarchar(50), 
    @uBankID int, 
    @uCompanyID int, 
    @BankID int, 
    @SortCode int, 
    @AccountNumber nvarchar(50), 
    @AccNameHolder nvarchar(50), 
    @cId int output, 
    @bId int output, 
    @euId int output 
AS 
BEGIN 
    SET NOCOUNT ON; 

    INSERT INTO [Bank](SortCode, AccountNumber, AccNameHolder) 
    VALUES(@SortCode, @AccountNumber, @AccNameHolder) 

    SET @bId = SCOPE_IDENTITY(); 

    INSERT INTO [Company](Organisation, Address, BankID) 
    VALUES(@Organisation, @Address, @bId) 

    SET @cId = SCOPE_IDENTITY(); 

    INSERT INTO [EndUser](Title, FirstName, LastName, uBankID, uCompanyID) 
    VALUES(@Title, @FirstName, @LastName, @uBankID, @cId) 

    SET @euId = SCOPE_IDENTITY(); 
END 
+0

Мне непонятно, вы получаете какие-либо ошибки? –

+0

Нет, нет. Единственным недостатком является пустое значение в столбцах uBankID, BankID и uCompanyID. – SelrekJohn

+0

Вы настроили столбцы для столбцов идентификации? –

ответ

1

Вы должны объявить переменные. И Tab Alleman прав, избавиться от неиспользуемых параметров.

DECLARE @cId int; 
DECLARE @bId int; 
DECLARE @euId int; 

INSERT INTO [BAD](SortCode,AccountNumber,AccNameHolder) 
VALUES('1234','a234','Test Name') 
SET @bId=SCOPE_IDENTITY(); 

INSERT INTO [Company](Organisation,Address1, Address2,City,County,PostCode,Telephone,BankID) 
VALUES('AnOrganisation','addressesss','Address2','City','County','PostCode','0123one', @bId) 
SET @cId=SCOPE_IDENTITY(); 

INSERT INTO [EndUser](Title,FirstName,LastName,Email,uBankID,uCompanyID) 
VALUES('Sitle','Fiame','astName','[email protected]',@bId,@cId) 
SET @euId=SCOPE_IDENTITY(); 

EDIT

Удалить эти параметры, если они не используются, но они не были в образце кода, иначе оставить их, очевидно.

Кроме того, я использовал одинарные кавычки для дампа в данных в таблицу, а не переменные, если он не работает, то с кодом конца банка что-то не так.

+2

Никогда не предлагайте использовать для этого @ @ identity. Опасно использовать (те обстоятельства, при которых они дают неправильное значение), и НИКОГДА НИ ПРИ КАКИХ-ЛИБО ОБСТОЯТЕЛЬСТВАХ не используется, чтобы получить значение Identity, которое вы только что вставили. Вместо этого используйте scope_identity() или предложение OUTPUT. – HLGEM

+0

Вы совершенно правы - внесли поправки в код, если другие придут к нему. Первоначально он использовал SCOPE_IDENTITY(); – PurpleSmurph

Смежные вопросы