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

关于存储过程的动态调用....
通过一个视图 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串好了