如何检查sql server表中没有列数据
我需要检查产品是否在表中 若不在表中,我需要为产品分配productId并插入它,所以我尝试了下面的代码…它运行成功,但并没有插入值 我的代码如何检查sql server表中没有列数据,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我需要检查产品是否在表中 若不在表中,我需要为产品分配productId并插入它,所以我尝试了下面的代码…它运行成功,但并没有插入值 我的代码 create proc spr_tbl_ProductNameId_insert @productName VARCHAR(30) as DECLARE @key VARCHAR(5), @i int,@name varchar(30) SET @i = 1 SET @name = (select [Product Name] from tb
create proc spr_tbl_ProductNameId_insert
@productName VARCHAR(30)
as
DECLARE @key VARCHAR(5), @i int,@name varchar(30)
SET @i = 1
SET @name = (select [Product Name] from tbl_ProductNameId where [Product Name] =@productName)
WHILE @i > 0
BEGIN
SET @key = (SELECT ABS(Checksum(NewID()) % 467) + 1000)
SET @i = (SELECT count(*) FROM tbl_ProductNameId WHERE [Product Id] = @key)
if(@name !=@productName)
insert into tbl_ProductNameId ([Product Name],[Product Id]) values (@productName,@key)
end
在我出错的地方…谢谢我读了你的代码,似乎你正在进行未定义的循环,因为你设置了
,而@i>0
然后将i
值设置为唯一随机数。所以不要在循环中结束
我做了一些修改并发表了评论。请查收
create proc spr_tbl_ProductNameId_insert
@productName VARCHAR(30)
as
BEGIN --start always with begin end keyword
DECLARE @key VARCHAR(5), @i int,@name varchar(30)
SET @i = 1
SET @name = (select [Product Name] from tbl_ProductNameId where [Product Name] =@productName)
WHILE @i > 0
BEGIN
SET @key = (SELECT ABS(Checksum(NewID()) % 467) + 1000)
--always give isnull function for default value, it good to set when result is null
SET @i = isnull( (SELECT count(*) FROM tbl_ProductNameId WHERE [Product Id] = @key),0)
if(@name !=@productName)
insert into tbl_ProductNameId ([Product Name],[Product Id]) values (@productName,@key)
END
END --end always with end keyword
可以有两个同名产品吗?如果是这样,@name应替换为temp。桌子