首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

超级郁闷!存储过程中数据库名为动态参数,求教动态SQL!解决思路

2012-03-19 
超级郁闷!存储过程中数据库名为动态参数,求教动态SQL!超级郁闷!存储过程中数据库名为动态参数,求教动态SQL

超级郁闷!存储过程中数据库名为动态参数,求教动态SQL!
超级郁闷!存储过程中数据库名为动态参数,求教动态SQL!
参看以下存储过程中的某段代码
SET @SET_SQL=''
SET @SET_SQL=N'SELECT '+ 
'[ZB].[OTHER_CM_INFO],
[ZB].[OTHER_SC_INFO],
[ZB].[COOP_MYCOMP_CODE]'+
' FROM ['+@DB+'].[dbo].[ZB102_COMP_COOPERATION][ZB]'+
' WHERE '+ 
'[ZB].[COMP_CODE]='''+@INP_COMP_CODE+
''' AND '+ '[ZB].[DEPT_CODE]='''+@INP_DEPT_CODE+''''
EXEC SP_EXECUTESQL @SET_SQL,

其中数据库名为变量“@DB”中的值,整段SQL都是拼写到变量@SET_SQL中的。
遇到的问题1:该存储过程调用另外一个存储过程该怎么写?(另外一个存储过程保存的库名也为变量)
  问题2:该存储过程调用另外一个存储过程时,启动参数中包含datetime型或者其他类型时,无法拼写到@SET_SQL中。
  问题3:取得另外一个存储过程的返回值该怎么写?


[解决办法]
1、你要什么样的结果动态拼接即可。
2、如果不是字符串类型的,要转成字符串在拼接:
例如 int 可以用ltrim 转换
datetime 可以用convert(varchar(10),getdate(),120)
可以用cast。
[解决办法]

SQL code
例子1declare @返回值 varchar(20)set @返回值 = ''exec 另一个存储过程 '输入值1','输入值2',@返回值 outputselect @返回值例子2create table #返回表(字段1 varchar(20),字段2 varchar(20))insert into #返回表exec 另一个存储过程 '输入值1','输入值2'select * from #返回表 

热点排行