关于存储过程的动态调用.解决方法
关于存储过程的动态调用....
通过一个视图 view,可以查询出一个数据集.
select * from view
-------------------
id a b
1 1 1
2 2 2
3 3 3
然后,有一个存储过程pro 传入a,b 返回一个数据 c
exec pro a,b
------------------
c
1
即 当a=1,b=1时,得到c=1
视图中每条记录的 一组a,b都能得到一个c
现在想实现的是..
----------------------------
id a b c
1 1 1 1
2 2 2 2
求教大婶,, 怎样实现.......
我是小白,麻烦讲的通俗易懂些...
ps.存储过程中用的是动态sql,不能用自定义函数来实现..
------解决方案--------------------
纠结的是你这个c是怎么得出来的,逻辑呢?
------解决方案--------------------
只能用函数做。如果是动态sql,你别想了。
------解决方案--------------------
通过一个视图 view,可以查询出一个数据集.
select * from view
-------------------
id a b
1 1 1
2 2 2
3 3 3
然后,有一个存储过程pro 传入a,b 返回一个数据 c
exec pro a,b
------------------
c
1
即 当a=1,b=1时,得到c=1
视图中每条记录的 一组a,b都能得到一个c
现在想实现的是..
----------------------------
id a b c
1 1 1 1
2 2 2 2
求教大婶,, 怎样实现.......
我是小白,麻烦讲的通俗易懂些...
ps.存储过程中用的是动态sql,不能用自定义函数来实现..
------解决方案--------------------
纠结的是你这个c是怎么得出来的,逻辑呢?
------解决方案--------------------
只能用函数做。如果是动态sql,你别想了。
------解决方案--------------------
- SQL code
ALTER PROC [dbo].[dfn_fjck_getpid] @rectype VARCHAR(20) , ---------------------传说中的a @main_sid VARCHAR(20) ---------------------传说中的b AS BEGIN DECLARE @tablename VARCHAR(100) DECLARE @projectid VARCHAR(20) DECLARE @keyfield VARCHAR(20) DECLARE @sql VARCHAR(1000) SELECT @tableName = tableName , @keyfield = keyField , @projectid = projectidField FROM pub_SelfDefine WHERE rectype = @rectype --将结果插入临时表 SET @sql = ' SELECT ' +@keyfield +','+ @main_sid +','+@projectid + ' ----------------传说中的c FROM ' + @tablename + 'into #temp WHERE ' + @keyfield + ' = ''' + @main_sid + ''' ' PRINT @sql EXEC( @sql) --临时表关联视图得到c select a.a,a.b,b.c from 视图A a inner join #temp b on a.a=b.a and a.b=b.b END
------解决方案--------------------
哈哈,你想写个动态sql 拼sql串好了