当前位置: 代码迷 >> Sql Server >> 关于存储过程的动态调用.解决方法
  详细解决方案

关于存储过程的动态调用.解决方法

热度:43   发布时间:2016-04-27 11:18:40.0
关于存储过程的动态调用....
通过一个视图 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)   ---------------------传说中的bAS     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  ' [email protected] +','+ @main_sid +',[email protected] + '    ----------------传说中的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串好了
  相关解决方案