0
CREATE PROCEDURE  _InsertAttbts
    @Attribute VARCHAR(100)

AS 

    IF  NOT EXISTS (SELECT * FROM dbo.Attributes WHERE Attribute = @Attribute)

    INSERT INTO dbo.Attributes(Attribute)
                VALUES(@Attribute)

    IF  NOT EXISTS (SELECT * FROM DBO.Products WHERE Pname =@Attribute)

        ALTER TABLE PRODUCTS
        ADD @Attribute varchar(100)

Products是我的主表,Attributes也是它的子表。我的任务是,如果用户尝试插入新行,它会检查该行是否存在,如果不存在,它想在产品表中添加新行,同时它应该在属性表的属性字段中插入相同的值...

我在 SQL Server 2012 中使用 SP。

请帮忙!

谢谢....

4

1 回答 1

2

我认为您需要使用动态 SQL 来执行此操作。

CREATE PROCEDURE _InsertAttbts @Attribute VARCHAR(100)
AS
BEGIN
    IF NOT EXISTS (SELECT * FROM dbo.Attributes WHERE Attribute = @Attribute)
    BEGIN
        INSERT INTO dbo.Attributes(Attribute)
            VALUES(@Attribute);

        declare @sql nvarchar(max) = 'ALTER TABLE PRODUCTS ADD '+@Attribute+' varchar(100)';
        exec sp_executesql @sql;
    END;
END;

我不知道你为什么要这样做。INFORMATION_SCHEMA.COLUMNS您可以使用系统表或其中一个系统表来获取列列表。

于 2013-07-30T02:59:26.820 回答