Avatar billede ae03 Novice
11. juli 2012 - 10:29 Der er 8 kommentarer og
1 løsning

Tolkning af fejlmeddelelse

Når jeg kører koden

set @sql = '
update '+@t_samle+'
set omraade = '+@omraade+'
where omraade is null'
exec(@sql)

får jeg følgende fejlmeddelelse:

Conversion failed when converting the nvarchar value '
update MyC.samlet_2011_2012
set omraade = ' to data type tinyint.

Tidligere i min kode har jeg declared @omraade som tinyint og sat værdien til 1, så det burde der ikke være problemer med.

Jeg har fundet en del hits ved at google fejlmeddelelsen, men det er jeg ikke blevet stort klogere af. Er der nogen, der kan forklare mig, hvad der er galt?

Jeg kører SQL Server 2005.

Vh Lars
Avatar billede runesoft Nybegynder
11. juli 2012 - 11:44 #1
Du har ikke tilfældigvis declareret @sql som værende en tinyint?
Avatar billede ae03 Novice
11. juli 2012 - 12:41 #2
Nej. @SQL er declared som nvarchar(4000) og virker fint andre steder i min kode.
Avatar billede Syska Mester
11. juli 2012 - 12:59 #3
Det virker som om den prøvet at lave noget implicit conversion af en variable.

Jeg ville nok caste din nvarchar til en tinyint i stedet for at stole på SQL kan finde ud af det.

mvh
Avatar billede ae03 Novice
11. juli 2012 - 13:38 #4
For lige at forst dig ret. Du mener, at jeg skal caste @omraade som tinyint?
Avatar billede ae03 Novice
11. juli 2012 - 15:34 #5
@buzzzz

Nej, det er selvfølgelig ikke det, du mener. Men du pegede på løsnigen, om end jeg ikke skal caste min nvarchar som tinyint, men derimod min tinyint som char. Pointen er jo netop, at jeg ikke bare kan indsætte et tal i min streng.

Smid et svar og få pointene som tak for at pege mig i den rigtige retning.

Vh Lars
Avatar billede Syska Mester
11. juli 2012 - 15:47 #6
Svar.

Mærkeligt at den vil lave det hele om til tinyint, i stedet for den tinyint om til nvarchar ved implicit conversion.

Godt det kom til at virke.
Avatar billede ae03 Novice
11. juli 2012 - 15:55 #7
Tjaa.. Skulle mene, at det gav mere mening at konvertere et tal til tekst end at forsøge at konvertere en tekststreng til tal. Men det er vist bare her, hvor rå regnekraft kommer til kort overfor menneskelig logik ;-)
Avatar billede Syska Mester
11. juli 2012 - 17:36 #8
Ja, enig ... ligesom i .NET ... der er det jo også fra faktisk alt til string ...

Men SQL kan være mærkeligt, derfor jeg ville synes man skulle caste den tinyint, for at være sikker på at der ikke sker noget mærkeligt.

mvh
Avatar billede janus_007 Nybegynder
11. juli 2012 - 20:44 #9
Jeg synes nu ikke det er så underligt, string concat i TSQL kan kun laves på (n)varchar og ikke andet.
Du prøver at behandle en tinyint som en varchar og derfor brokker MSSQL sig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester