日期:2014-05-17  浏览次数:20437 次

关于在java程序里调用SQL Server2005存储过程
有这样一个存储过程:
create procedure getCollectbalance2
@col varchar(2000)
as
begin
declare @sqlstr varchar(3000)
 set @sqlstr='select '+@col+'  from t_collect'
exec (@sqlstr)
end
go
然后因为可能那个SQL语句不一定是查询了,又要动态的改变那个语句,就变成了这样:
create procedure getCollectbalance2
@col varchar(2000)
as
begin
declare @sqlstr varchar(3000)
 set @sqlstr=@col
exec (@sqlstr)
end
go
如果是一条修改语句的话update t_collect set balance_seg1_id='A3' where c_id=1
那这两个参数该怎么传?
还有一个问题,在java里面调用存储过程的时候想alter procedure getCollectbalance2
也就是想在调用的时候不是执行存储过程,而是根据传的东西修改该怎么办?
该怎么办?
------解决方案--------------------

declare @A varchar(2)='A3'
declare @c_id int=1
declare @sql varchar(2000)
set @sql=
'update t_collect set balance_seg1_id='+quotename(@A,'''')+' where c_id='+ltrim(@c_id)
print @sql

/*
update t_collect set balance_seg1_id='A3' where c_id=1

*/