SQL语句 传自定义表到临时表

SQL不能传数组,也不能传自定义的表。一个变通的办法是转换成一定格式的String以后传。

如输入String s= @'A,1;B,2'

CREATE   PROCEDURE  dbo.ShowId
(
@inputString   varchar ( max )
)
AS
DECLARE    @PointerPrev   int
DECLARE   @PointerCurr    int
DECLARE   @spaceIndex   int
DECLARE   @subString   varchar ( 50 )
DECLARE   @keyWord   varchar ( 50 )
DECLARE   @value   int

Set   @PointerPrev = 0  
set    @PointerCurr = 0
SET   @inputString   =   ' A,1;B,2 '

CREATE   TABLE  # temp
(
    tKeyword 
varchar ( 50 ),
    tValue 
int
)

begin   transaction  
    
SET  NOCOUNT  ON ;
    
truncate   table  # temp -- 清空临时表的所有数据和约束
while ( LEN ( @inputString ) > @PointerCurr )
begin
    
Set   @PointerCurr = CharIndex  ( ' ; ' , @inputString  , @PointerPrev + 1 )
    
if ( @PointerCurr <= 0 )
        
break
    
else
    
begin
        
set   @subString = SUBSTRING ( @inputString , @PointerPrev + 1  , @PointerCurr - @PointerPrev - 1 )
        
set   @spaceIndex = CharIndex  ( ' , ' , @subString  , 1 )
        
set   @keyWord = SUBSTRING ( @subString , 1 , @spaceIndex - 1 )
        
set   @value = CAST SUBSTRING ( @subString , @spaceIndex + 1 , LEN ( @subString ) - @spaceIndex as   int )
        
INSERT   INTO  # temp   VALUES ( @keyWord , @value )
        
set   @PointerPrev = @PointerCurr ;
    
end
end
    
set   @subString = SUBSTRING ( @inputString , @PointerPrev + 1  , LEN ( @inputString ) - @PointerPrev )
    
set   @spaceIndex = CharIndex  ( ' , ' , @subString  , 1 )
    
set   @keyWord = SUBSTRING ( @subString , 1 , @spaceIndex - 1 )
    
set   @value = CAST SUBSTRING ( @subString , @spaceIndex + 1 , LEN ( @subString ) - @spaceIndex as   int )
    
INSERT   INTO  # temp   VALUES ( @keyWord , @value )


Set  NoCount  OFF
if   @@error =   0
begin
    
commit   transaction
end
else  
begin
    
rollback   transaction
end
select   *   from  # temp

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值