发现用VS.NET 2005来写存储过程的代码相当方便顺手,题目所说得问题想了半天,晚上回到家里面装了sqlserver再接着试,终于搞定了。享受ING。
数据如下:
表aaa
name        
----------- 
1           
2           
3           
4           
5           
6           
7           
8           
9 
表bbb
name        old         
----------- ----------- 
1           11          
2           22          
3           33          
4           44          
5           55          
6           66          
7           77          
8           88          
9           99  
查询aaa中指定name的记录与bbb作联合所得的数据
ALTER PROCEDURE dbo.a 
(
 @input varchar(10),
 @input1 varchar(10)
)
AS
 declare @sql varchar(1000)
set @sql=' SELECT aaa.name,bb.old FROM aaa left join (SELECT name,old FROM bbb where name in ('+@input1+')) bb on bb.name=aaa.name where aaa.name in ('+@input+')'
 print @sql
exec (@sql)
执行结果:
运行[dbo].[a] ( @input = 1,2,3,5, @input1 = 2,3 ).
 SELECT aaa.name,bb.old FROM aaa left join (SELECT name,old FROM bbb where name in (2,3)) bb on bb.name=aaa.name where aaa.name in (1,2,3,5)
name        old         
----------- ----------- 
1           <NULL>      
2           22          
3           33          
5           <NULL>  
想了半天,经过同事提醒,发现原来可以在存储过程中组织查询语句,用execute来执行,得到结果。
立此存照!
                    
                
                
            
        
浙公网安备 33010602011771号