读书人

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

发布时间: 2012-09-04 14:19:30 作者: rapoo

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

读书人网 >SQL Server

热点推荐