存储过程交叉表ID输入

时间:2014-12-11 16:22:37

标签: sql sql-server stored-procedures

我试图将其他表格的ID(CompanyBank)插入uBankIDuCompanyID EndUser }表格和BankIDCompany表格的INSERT

无论我做什么,所需的字段都没有填充,我做错了什么?我查看了ID上的内联select语句,试图抓住它,但无法理解它,它也不会编译。

变量在后端都存在且正确,并且正在被解析,除了这些ID之外的所有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

1 个答案:

答案 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','vv@Email',@bId,@cId)
SET @euId=SCOPE_IDENTITY();

修改

如果没有使用这些参数,请删除它们,但它们不在示例代码中,否则请将它们留下。

另外,我使用单引号将数据转储到表中而不是变量中,如果它不起作用则银行结束代码出现问题。