Avatar billede thrakrath Nybegynder
12. oktober 2001 - 21:38 Der er 2 løsninger

Stored procedures igen.

Hej

Spørgsmålet er lidt i forlængelse af et tideligere spørgsmål: http://www.eksperten.dk/spm/120195

Jeg har følgende:

declare @Temp_Sub_Kategori_ID Int,
    @Temp_Kategori_Vaerdi Varchar(255),
    @Kategori_ID Int,
    @Temp_Kategori_Array Varchar(255),
    @Temp_Sql_String Varchar(255)

Set @Kategori_ID = 5
Set @Temp_Kategori_Array = 0

Set @Temp_Sql_String =\'Select
            \' + @Temp_Sub_Kategori_ID + \' = Kategori_Sub_ID, 
            \' + @Temp_Kategori_Vaerdi + \' = Kategori_Vaerdi From tbl_Kategori
            Where
                Kategori_Sub_ID = \' + @Kategori_ID + \' And
            Kategori_ID Not In (\' + @Temp_Kategori_Array + \')\'

Print @Temp_Sub_Kategori_ID

Og jeg får følgende fejl:

Server: Msg 245, Level 16, State 1, Line 10
Syntax error converting the varchar value \'Select \' to a column of data type int.

Hvad er det lige jeg gør galt?
Avatar billede torbenkoch Nybegynder
12. oktober 2001 - 21:50 #1
Dit problem er, at du roder rundt i datatyperne int og varchar.

Din @Kategori_ID er af typen int og den forsøger du at plusse til en streng. Det kan man ikke - SQL Server vil i den situation forsøge at konvertere strengen til int, og det kan den selvsagt ikke.

I stedet for @Kategori_ID skriver du:

  CONVERT(varchar(255), @Kategori_ID)
Avatar billede pniels12 Nybegynder
19. oktober 2001 - 08:36 #2
Er der ikke også et problem med at tildele værdier til lokale variable ved hjælp af set ??
Hvis jeg gør dette giver det en fejl.
Prøv evt. med:
select @Kategori:ID=5
.....
Derud over er det klart at du ikke kan concatinere en streng med en int.
Der er ikke implicit convertering mellem int og varchar du skal derfor bruge convert funktionen.
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