[sql] Sp_rename geeft "incorrect syntax"

Pagina: 1
Acties:

  • Chillz
  • Registratie: Augustus 2001
  • Laatst online: 21-08 17:47
ik wil in SQL een aantal kolommen van naam veranderen...
om het typewerk zoveel mogelijk te verminderen moet natuurlijk alle info uit de database komen... op zich geen probleem, want het zit erin...

het veranderen doe ik met sp_rename

code:
1
2
3
EXECUTE ('sp_rename ''' + @tabel_naam +'.'+ @kolom_naam + '''
  , test_' + @kolom_naam + '
  , ''COLUMN''')


op deze manier werkt hij wel,
maar eigenlijk wil ik dat deze werkt:

code:
1
2
3
4
5
6
7
8
SET @kolom_nieuw 
    = @tabel_naam + '.' + 'stuff(@kolom_naam, (len(@tabel_naam - 5), 0, right(@tabel_naam, 5) )'

<...>

EXECUTE ('sp_rename ''' + @tabel_naam +'.'+ @kolom_naam + '''
  , '@kolom_nieuw'
  , ''COLUMN''')


maar nu wil hij ineens niet meer :( :(
met de melding:

Line 28: Incorrect syntax near '@kolom_nieuw'.

Wanneer ik '@kolom_nieuw' met +'jes versterk, net als bij de test_ gedaan wordt, dus: ' + @kolom_nieuw + ' dan wordt alles uitgevoerd, maar ga ik naar het resultaat kijken, dan blijkt dat er niets is veranderd...

Volgens mijn collega is het een kwestie van apostrofjes ' plaatsten, maar ik ben nu al 2 dagen aant zoeken waar ik ze kan zetten, maar niets werkt...

wie kan mij helpen?

[ Voor 39% gewijzigd door Chillz op 14-07-2003 11:56 ]

Leeg - Sinds 20180907


Verwijderd

haal de quotjes eens weg bij @kolom_nieuw

Je kan het debuggen met:
SELECT ('sp_rename ''' + @tabel_naam +'.'+ @kolom_naam + '''
, '@kolom_nieuw'
, ''COLUMN''')

[ Voor 61% gewijzigd door Verwijderd op 14-07-2003 13:48 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Dergelijke fouten opsporen wil wel eens makkelijker gaan als je die string die je wilt uitvoeren eens naar het scherm print ipv hem werkelijk uit te voeren.
Je zal dan zien wat er niet klopt aan de syntax.

https://fgheysels.github.io/


  • Chillz
  • Registratie: Augustus 2001
  • Laatst online: 21-08 17:47
yep... net zo makkelijk eigenlijk

ik heb gewoon een "Copy_" gemaakt van de tabel waarop de rename op plaats moet vinden
daar kan ik het ook aan zien, zonder dat de bewerking echt op mn database plaats heeft gevonden...


(ben er nog steeds niet uit btw)

Leeg - Sinds 20180907


  • Chillz
  • Registratie: Augustus 2001
  • Laatst online: 21-08 17:47
het is me gelukt...

voor de nieuwsgierigen onder ons
(of voor wie hier ooit nog op gaat zoeken):

in de sp_rename functie mogen niet te veel (liefst geen) andere functies - zoals ik LEN, RIGHT en STUFF gebruikt had
Deze heb ik dus eerst als variabele gedeclareerd en geset, binnen de rename zijn het nu vaste waarden en werkt het wel...

code:
1
2
3
4
5
6
7
8
9
set @lengte = len(@tabel_naam) - 4

set @jaartal = right(@tabel_naam, 5)

set @kolom_nieuw = stuff(@kolom_naam, @lengte, 0, @jaartal)

  exec ('sp_rename ''' + @tabel_naam +'.'+ @kolom_naam + '''
  , ' + @kolom_nieuw + '
  , ''COLUMN''')

Leeg - Sinds 20180907


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Ik snap even niet waarom je zo moeilijk doet met die quotes.
Werkt zoiets niet net zo goed (niet getest overigens)

SQL:
1
2
3
4
5
set @lengte = len(@tabel_naam) - 4
set @jaartal = right(@tabel_naam, 5)
set @kolom_nieuw = stuff(@kolom_naam, @lengte, 0, @jaartal)

EXEC sp_rename (@tabel_naam + '.' + @kolom_naam), @kolom_nieuw, 'COLUMN'

Today's subliminal thought is:


  • Chillz
  • Registratie: Augustus 2001
  • Laatst online: 21-08 17:47
Annie schreef op 14 July 2003 @ 20:21:
Ik snap even niet waarom je zo moeilijk doet met die quotes.
helemaal snappen doe ik het ook niet,
maar zo werkt hij,
en zonder de quotes dus niet... :?

het heeft iets te maken met hetzelfde idee als ik hierboven zeg dat er in de sp_rename functie zo min mogelijk andere functies moeten staan.
Zo doet hij ook nog moeilijk met de variabelen, want sql is geneigd ze (zonder quotes) te herkennen als gewoon text.
zoiets

Leeg - Sinds 20180907


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Het ging mij eigenlijk meer om de quotes dan om het variabelen verhaal (dat laatste had ik ook niet getest). Een sp roep je aan met EXEC sp_naam 'param' en niet met EXEC('sp_naam ''param'''). Nu werkt dat laatste wel, maar is eigenlijk een beetje onzin.

Dat je uiteindelijk de eerste variabele ook vooraf moet samenstellen had je dan natuurlijk zelf wel kunnen verzinnen, of niet soms?
code:
1
2
3
4
DECLARE @table_dot_column NVARCHAR(776)
SET @table_dot_column = @tabel_naam + '.' + @kolom_naam

EXEC sp_rename @table_dot_column, @kolom_nieuw, 'COLUMN'

Today's subliminal thought is:


  • Chillz
  • Registratie: Augustus 2001
  • Laatst online: 21-08 17:47
ik heb de sp eerst geprobeerd te maken zonder de quotes...
maar toen werkte hij ook niet, Sql wilde de sp toen nog niet eens herkennen...
na wat zoeken door voorbeeldjes zag ik de haken en quotes
-> overgenomen, sp herkend
alleen toen werkte de bewerking niet, en kwam ik aan de aanleiding voor dit topic...

Leeg - Sinds 20180907

Pagina: 1