Sto cercando di partecipare a una serie di valori di database, ma in questa dichiarazione:SQL server + query dinamica + 'I tipi di dati nvarchar e bit non sono compatibili con l'operatore di aggiunta.'
SET @sql = ('select' + @var1 + '+' + convert(varchar,@var2) +
'from [VoucherType] where [DeletedBy] is null and [AutoID] = 1')
ottengo un errore che dice
I tipi di dati nvarchar e bit sono incompatibili nella aggiungere dell'operatore.
@var2
che è [IsBirthdayVoucher]
nel mio database è un tipo bit
ma ho già applicato convert(varchar, @var2)
su di esso. Per favore, consiglio gentilmente quello che sto facendo male. Grazie.
SPROC:
declare @Str as varchar(max)
declare @var1 as varchar(30)=null
declare @var2 as varchar(30)=null
declare @var3 as varchar(30)=null
declare @var4 as varchar(30)=null
declare @var5 as varchar(30)=null
declare @sql as varchar(355)
set @Str = '[Code][IsBirthdayVoucher][IsReusable]VouT'
Set @var1= (select LEFT(@Str, CHARINDEX(']', @Str)))
set @Str = SUBSTRING(@Str, CHARINDEX(']', @Str) + 1, LEN(@Str))
Set @var2 =(select LEFT(@Str, CHARINDEX(']', @Str)))
set @Str = SUBSTRING(@Str, CHARINDEX(']', @Str) + 1, LEN(@Str))
Set @var3 =(select LEFT(@Str, CHARINDEX(']', @Str)))
set @Str = SUBSTRING(@Str, CHARINDEX(']', @Str) + 1, LEN(@Str))
SET @sql = ('select' + @var1 + '+' + convert(varchar,@var2) + 'from [VoucherType] where [DeletedBy] is null and [AutoID] = 1')
EXEC(@sql)
ci credo * * dovrebbe essere uno spazio dopo ' 'select'', vale a dire che dovrebbe essere'' selezionare ''. Il '[' fungerà da delimitatore, ma nell'interesse della programmazione difensiva ... –
Ho svitato contro il downvote. Non capisco perché ci sia stato un downvote, questa sembra una domanda ragionevole. –