400分求改一存储过程的错误,并说明

来源:百度知道 编辑:UC知道 时间:2024/09/21 18:50:41
http://zhidao.baidu.com/question/76278936.html
2个帖子 一共400分哈
大哥们 帮帮忙啊

小弟新学,请各位大虾指正。

CREATE PROCEDURE newstock_add(
@Tb varchar(50),
@UserId int,
@PartNo varchar(100),
@Brand varchar(100),
@DateCode varchar(100),
@Quantity varchar(100),
@Price varchar(100),
@Package varchar(100),
@Note varchar(100)
)
AS

if not exists Exec( ' SELECT top 1 * FROM ' + @Tb + ' where PartNo= ' + @PartNo + ' and userid= ' + @userid + ' order by partno ' )
begin
Insert into @Tb (UserId,PartNo,Brand,DateCode,Quantity,Price,Package,Note)
values(@UserId,@PartNo,@Brand,@DateCode,@Quantity,@Price,@Package,@Note)
end
else
begin
update @Tb set Brand=@Brand,DateCode=@DateCode,Quantity=@Quantity,Price=@Price,Package=@Package,Note=@Note wh

改成什么呀,你说清楚点,@tb是不能这样的写的,如果非要这样写你得拼接字符串不知道你为什么有这样的需求,难首在这执行这个过程之前,表名都不能确定吗

如果非要你所说的那样的话也是可以的
newstock_add 'asdfs',1,'a','a','a','a','a','a','a'

alter PROCEDURE newstock_add(
@Tb varchar(50),
@UserId int,
@PartNo varchar(100),
@Brand varchar(100),
@DateCode varchar(100),
@Quantity varchar(100),
@Price varchar(100),
@Package varchar(100),
@Note varchar(100)
)
AS
declare @sql varchar(8000)
set @sql='if not exists Exec( SELECT top 1 * FROM ' + @Tb + ' where PartNo= '+ @PartNo + ' and userid= ' + cast(@userid as varchar(10))+ ' order by partno )
begin
Insert into '+@Tb+ '(UserId,PartNo,Brand,DateCode,Quantity,Price,Package,Note)
values('+cast(@UserId as varchar(10))+','''+@PartNo+''','''+@Brand+
''','