我是SQL Server和T-SQL的新手,但我确实有一些在MS Access中构建应用程序的经验。
当我从应用程序执行它时,此存储过程运行正常,但是当我在SSMS中调试它时,我收到错误
无法步骤。操作无效。
但它可以让我一步一步。根据我的研究,似乎我正在创造竞争条件,但我无法正确解决问题。我也很感激任何建议,以优化或解决任何明显的问题。
代码的作用:
此代码用于将新客户输入数据库。第一个select语句查找现有ID。如果ID为null,则会添加新客户。如果ID不为null,则不会添加客户。第二个IF
语句也是如此,以便在插入这些值之前检查@pName2
和@pName3
是否为空。
这是我的代码:
@pUID nvarchar(16) = null,
@pName1 nvarchar(50) = null,
@pName2 nvarchar(50) = null,
@pName3 nvarchar(50) = null,
@pAddress1 nvarchar(30) = null,
@pAddress2 nvarchar(30) = null,
@pAddress3 nvarchar(30) = null,
@pZipCode nvarchar(30) = null
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID INT
SELECT @ID = ID FROM tblCustomer WHERE strUID = @pUID
IF @ID IS NULL
BEGIN
DECLARE @Customer_ID INT
INSERT INTO tblCustomer(strUID, strName)
VALUES(@pUID, @pName1)
SET @Customer_ID = @@IDENTITY
IF (@pName2 <> '') OR (@pName3 <> '')
BEGIN
INSERT INTO tblSecondaryCustomer(CustomerID, strName2, strName3)
VALUES(@Customer_ID, @pName2, @pName3)
END
INSERT INTO tblAddress(CustomerID, strAddress1, strAddress2, strAddress3, strZipCode)
VALUES(@Customer_ID, @pAddress1, @pAddress2, @pAddress3, @pZipCode)
END
END
答案 0 :(得分:0)
尝试使用以下内容替换您的IF语句:
IF NOT EXISTS(SELECT ID FROM tblCustomer WHERE strUID = @pUID)
使用@ID似乎不是检查存在...而且您可以使用ISNULL
函数来确保涵盖NULL
个案例......
IF (ISNULL(@pName2,'') <> '') OR (ISNULL(@pName3,'') <> '')
HTH
戴夫