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
是其子表。我的任务是,如果用户尝试插入新行,则检查该行是否存在,如果不是,则要在product表中添加新行,同时应在属性表的属性字段中插入相同的值...
我在SQL Server 2012中使用SP。
Plz帮助!
...谢谢
答案 0 :(得分: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
或其中一个系统表获取列列表。