字符串插入的情况

问题描述 投票:0回答:1

我在下面插入了字符串语句,但它的Case部分似乎打破了它。如果来自特定表的Paymenttype的值是TNP1,那么我希望它使用一个特定值,如果是TNP2,那么我需要使用另一个值。相反,我得到一个错误,说我的案例中的WHEN表达式存在问题。有任何想法吗?使用Advantage Arc。

open cur as 
select
'insert into pctrnpay'+char(10)+
'('+char(10)+
'ident,'+char(10)+
'actual,'+char(10)+
'sys_type,'+char(10)+
'actualamt,'+char(10)+
'descrip,'+char(10)+
'status,'+char(10)+
'expected,'+char(10)+
'expamt,'+char(10)+
')'+char(10)+
'values'+char(10)+
'('+char(10)+
iif(internalident is not null,char(39)+trim(cast(internalident as 
sql_char(5)))+char(39),'Null')+','+char(13)+char(10)+
iif(financialdate is not null,char(39)+trim(cast(financialdate as 
sql_char(10)))+char(39),'Null')+','+char(13)+char(10)+
iif(paymenttype is not null,char(39)+'APTB_'+trim(cast(paymenttype as 
sql_char(10)))+char(39),'Null')+','+char(13)+char(10)+
iif(amount is not null,trim(cast(amount as 
sql_char(4))),'Null')+','+char(13)+char(10)+
char(39)+ case paymenttype  when paymenttype='TNP1' then 'App Total 
Negotiated Price - Training'
                        when paymenttype='TNP2' then 'App Total Negotiated 
Price - Assessment'
                        end +char(39)+','+char(13)+char(10)+
');'+char(10)+char(10) str_SQL
from [..\_control\pics.add]._FinancialDetails ;
sql case advantage-database-server
1个回答
3
投票

你目前有:

CASE paymenttype
  WHEN paymenttype = 'TNP1' THEN ...
  WHEN paymenttype = 'TNP2' THEN ...
END

这不是CASE表达式的有效形式,您正在混合简单和搜索的CASE表单。

一个简单的CASE看起来像这样:

CASE paymenttype
  WHEN 'TNP1' THEN ...
  WHEN 'TNP2' THEN ...
END

搜索到的CASE看起来像这样:

CASE
  WHEN paymenttype = 'TNP1' THEN ...
  WHEN paymenttype = 'TNP2' THEN ...
END

两者都是等价的,因此您可以从这两种形式中选择一种。

© www.soinside.com 2019 - 2024. All rights reserved.