sqlserver存储过程部分语句不执行 10
createprocproc_shujubidui2(@tablenamesysname,--比对表@standardsysname,--标准表@ziduan1varch...
create proc proc_shujubidui2
(
@tablename sysname,--比对表
@standard sysname,--标准表
@ziduan1 varchar(30),--比对表字段
@ziduan2 varchar(30),--标准表字段
@ziduan3 varchar(30)--条件字段
)
as
declare @newziduan1 varchar(30)--声明接收字段
declare @newziduan2 varchar(30)
declare @newziduan3 varchar(30)
declare @sql1 varchar(1500)
declare @init varchar(10)
begin--整体程序开始
set @sql1=('select '+ @init+'=count(*) from '+@tablename)
print @sql1
exec (@sql1)
print @init
-- set @init=cast(@init as int)
if(@init='0')
begin--与标准表比对的表开始
--利用游标查询出工商数据表中的数据
set @sql1='declare bidui cursor for select '+@ziduan1+','+@ziduan3+' from '+@tablename
exec (@sql1)
print @sql1
open bidui
FETCH NEXT FROM bidui into @newziduan1,@newziduan3
while @@FETCH_STATUS = 0
begin--游标的开始
set @sql1='select '+@newziduan2+' = '+@ziduan2+' from '+@standard+' where '+@ziduan3+' = '+''''+ @newziduan3 +''''
print @sql1
--数据比对开始
set @sql1='select '+@init+' =count(*) from '+@standard+' where '+@ziduan3+ ' = '+''''+@newziduan3+''''
print @sql1
exec (@sql1)
--set @init=exec (@sql1)
if(@init<1)
begin
print '没有记录,添加新数据'
set @sql1='insert into '+@standard+'('+@ziduan2+') values('+''''+@newziduan1+''''+')'
exec (@sql1)
print @sql1
if (select count(*) from gongyongbiao where @ziduan3 = @newziduan3) < 1
begin
set @sql1='insert into gongyongbiao ('+@ziduan2+') values '+'('+''''+@newziduan1+''''+')'
exec (@sql1)
print @sql1
end
end
为什么我在执行这个存储过程时
set @sql1=('select '+ @init+'=count(*) from '+@tablename)
print @sql1
exec (@sql1)
print @init
-- set @init=cast(@init as int)
if(@init='0')
begin--与标准表比对的表开始
这些语句没有执行呢 展开
(
@tablename sysname,--比对表
@standard sysname,--标准表
@ziduan1 varchar(30),--比对表字段
@ziduan2 varchar(30),--标准表字段
@ziduan3 varchar(30)--条件字段
)
as
declare @newziduan1 varchar(30)--声明接收字段
declare @newziduan2 varchar(30)
declare @newziduan3 varchar(30)
declare @sql1 varchar(1500)
declare @init varchar(10)
begin--整体程序开始
set @sql1=('select '+ @init+'=count(*) from '+@tablename)
print @sql1
exec (@sql1)
print @init
-- set @init=cast(@init as int)
if(@init='0')
begin--与标准表比对的表开始
--利用游标查询出工商数据表中的数据
set @sql1='declare bidui cursor for select '+@ziduan1+','+@ziduan3+' from '+@tablename
exec (@sql1)
print @sql1
open bidui
FETCH NEXT FROM bidui into @newziduan1,@newziduan3
while @@FETCH_STATUS = 0
begin--游标的开始
set @sql1='select '+@newziduan2+' = '+@ziduan2+' from '+@standard+' where '+@ziduan3+' = '+''''+ @newziduan3 +''''
print @sql1
--数据比对开始
set @sql1='select '+@init+' =count(*) from '+@standard+' where '+@ziduan3+ ' = '+''''+@newziduan3+''''
print @sql1
exec (@sql1)
--set @init=exec (@sql1)
if(@init<1)
begin
print '没有记录,添加新数据'
set @sql1='insert into '+@standard+'('+@ziduan2+') values('+''''+@newziduan1+''''+')'
exec (@sql1)
print @sql1
if (select count(*) from gongyongbiao where @ziduan3 = @newziduan3) < 1
begin
set @sql1='insert into gongyongbiao ('+@ziduan2+') values '+'('+''''+@newziduan1+''''+')'
exec (@sql1)
print @sql1
end
end
为什么我在执行这个存储过程时
set @sql1=('select '+ @init+'=count(*) from '+@tablename)
print @sql1
exec (@sql1)
print @init
-- set @init=cast(@init as int)
if(@init='0')
begin--与标准表比对的表开始
这些语句没有执行呢 展开
展开全部
begin--整体程序开始
set @sql1=('select '+ @init+'=count(*) from '+@tablename)
print @sql1
exec (@sql1)
print @init
@init没有值的,
改成:
select @init =count(*) from @tablename
set @sql1=('select '+ @init+'=count(*) from '+@tablename)
print @sql1
exec (@sql1)
print @init
@init没有值的,
改成:
select @init =count(*) from @tablename
追问
那样写的话也不行,提示必须声明表变量@tablename
错误:
消息 1087,级别 15,状态 2,过程 proc_shujubidui2,第 22 行
必须声明表变量 "@tablename"。
追答
create proc proc_shujubidui2
(
@tablename sysname,--比对表
@standard sysname,--标准表
@ziduan1 varchar(30),--比对表字段
@ziduan2 varchar(30),--标准表字段
@ziduan3 varchar(30)--条件字段
)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |