CREATE procedure Pro_Update_Rs
(@tablename1 varchar(50),
@name varchar(50),
@fieldname1 varchar(50),
@fieldname2 varchar(50),
@id int,
@outcheck char(3) OUTPUT) as
declare @sql varchar(1000)
set @sql='select * from '+@tablename1+' where '+@fieldname1+'='''+@name+''' and '+@fieldname2+' <> '+ltrim(@id)
if exists(@sql)
select @outcheck='yes'
else
select @outcheck='no' GO 以上过程怎么总是说:
错误:107 @sql附近有语法错误,else附近有语法错误
该怎么解决呢?
(@tablename1 varchar(50),
@name varchar(50),
@fieldname1 varchar(50),
@fieldname2 varchar(50),
@id int,
@outcheck char(3) OUTPUT) as
declare @sql varchar(1000)
set @sql='select * from '+@tablename1+' where '+@fieldname1+'='''+@name+''' and '+@fieldname2+' <> '+ltrim(@id)
if exists(@sql)
select @outcheck='yes'
else
select @outcheck='no' GO 以上过程怎么总是说:
错误:107 @sql附近有语法错误,else附近有语法错误
该怎么解决呢?
goCREATE procedure Pro_Update_Rs
(@tablename1 varchar(50),
@name varchar(50),
@fieldname1 varchar(50),
@fieldname2 varchar(50),
@id int,
@outcheck char(3) OUTPUT) as
declare @sql varchar(1000)
set @sql='select @I=count(1) from '+@tablename1+' where '+@fieldname1+'='''+@name+''' and '+@fieldname2+' <> '+ltrim(@id)
declare @i int
exec sp_executesql @sql,N'@i int output',@i outputif @i > 0
select @outcheck='yes'
else
select @outcheck='no' GO
drop table tb
insert tb select 1,'a'goCREATE procedure Pro_Update_Rs
(@tablename1 varchar(50),
@name varchar(50),
@fieldname1 varchar(50),
@fieldname2 varchar(50),
@id int,
@outcheck char(3) OUTPUT) as
declare @sql nvarchar(1000)
set @sql=N'select @I=count(1) from '+@tablename1+' where '+@fieldname1+'='''+@name+''' and '+@fieldname2+' <> '+ltrim(@id)
declare @i int
exec sp_executesql @sql,N'@i int output',@i outputif @i > 0
select @outcheck='yes'
else
select @outcheck='no' GO
declare @s varchar(10)exec Pro_Update_Rs 'tb','a','col','id',3, @s out
print @s
drop proc Pro_Update_Rsdrop table tb/*
(所影响的行数为 1 行)yes*/
declare @fname varchar(10),@lname varchar(10),@s varchar(1000)
set @fname='Paolo'
set @lname='Cruz'
set @s='select 1 as aa into ##t from employee where fname='''+ @fname +''' or lname='''+@lname+''''
exec (@s)
if exists (select 1 from ##t )
print '1'
else
print '2'/*(所影响的行数为 2 行)1*/
/*
CREATE procedure Pro_Update_Rs
(@tablename1 varchar(50),
@name varchar(50),
@fieldname1 varchar(50),
@fieldname2 varchar(50),
@id int,
@outcheck char(3) OUTPUT) as
declare @sql varchar(1000)
set @sql='select * from '+@tablename1+' where '+@fieldname1+'='''+@name+''' and '+@fieldname2+' <> '+ltrim(@id)
if exists(@sql)
select @outcheck='yes'
else
select @outcheck='no' GO
*/CREATE procedure Pro_Update_Rs
(@tablename1 varchar(50),
@name varchar(50),
@fieldname1 varchar(50),
@fieldname2 varchar(50),
@id int,
@outcheck char(3) OUTPUT) as
declare @sql varchar(1000)
set @sql='select * into ##t from '+@tablename1+' where '+@fieldname1+'='''+@name+''' and '+@fieldname2+' <> '+ltrim(@id)
exec(@sql)
if exists(select 1 from ##t)
select @outcheck='yes'
else
select @outcheck='no' GO
(@tablename1 varchar(50),
@name varchar(50),
@fieldname1 varchar(50),
@fieldname2 varchar(50),
@id int,
@outcheck char(3) OUTPUT) as
declare @sql varchar(1000)
set @sql='select * from '+@tablename1+' where '+@fieldname1+'='''+@name+''' and '+@fieldname2+' <> '+ltrim(@id)
--此处与楼主不同
exec(@sql)
if @@rowcount>0
select @outcheck='yes'
else
select @outcheck='no' GO
ALTER procedure Pro_Update_Rs(
@tablename1 varchar(50),
@fieldname1 varchar(50),
@name varchar(50),
@fieldname2 varchar(50),
@id varchar(10),
@outcheck char(3) OUTPUT
) as declare @sql nvarchar(1000)
declare @out int
set @sql='select @i=count(*) from '+ @tablename1 + ' where ' + @fieldname1 + '= '''+ @name + ''' and '
+ @fieldname2 + ' = ''' +@id + ''''execute sp_executesql @sql,N'@i int output',@out outputif @out>=1
set @outcheck='yes'
else
set @outcheck='no'select @outcheck as 结果