Viac na
Musí deklarovať skalárnu premennú
@RowFrom int
@RowTo int
sú obidva globálne vstupné parametre pre uloženú procedúru a keďže kompilujem SQL dotaz vo vnútri uloženej procedúry pomocou T-SQL a potom používam Exec(@sqlstatement)
na konci uloženej procedúry na zobrazenie výsledku, tak mi to dáva túto chybu, keď sa pokúsim použiť @RowFrom
alebo @RowTo
vo vnútri premennej @sqlstatement
, ktorá sa vykonáva.. inak to funguje dobre.. prosím o pomoc.
"Must declare the scalar variable "@RowFrom"."
Tiež som skúsil zahrnúť nasledujúce údaje do premennej @sqlstatement
:
'Declare @Rt int'
'SET @Rt = ' + @RowTo
ale @RowTo
stále neprenáša svoju hodnotu do @Rt
a generuje chybu.
70
3
Nemôžete spojiť int s reťazcom. Namiesto:
Potrebujete:
Na ilustráciu toho, čo sa tu deje. Povedzme, že @RowTo = 5.
Aby som z toho vytvoril reťazec (aj keď to nakoniec bude číslo), musím ho previesť. Ale ako vidíte, pri vykonávaní sa s číslom stále zaobchádza ako s číslom. Odpoveď je 25, však?
Vo vašom prípade naozaj nemusíte znova deklarovať @Rt atď. vnútri reťazca @sql, stačí povedať:
Hoci by bolo lepšie mať správnu parametrizáciu, napr.
Len pre vašu informáciu, viem, že je to starý príspevok, ale v závislosti od nastavení databázy COLLATION môžete dostať túto chybu pri príkaze, ako je tento,
ak napríklad prepisujete S v
ospravedlňujeme sa za to, že sme tu už uverejnili odpovede, ale toto je skutočný prípad hlásenej chyby.
Všimnite si tiež, že chyba nezobrazí veľké S v správe, nie som si istý prečo, ale myslím si, že je to preto, že
je naľavo od znamienka rovnosti.
Tento problém spôsobuje aj citlivosť na veľké a malé písmená.
@MyVariable a @myvariable sú v SQL Server Man rovnaké premenné. Studio a budú fungovať. Avšak tieto premenné budú mať za následok "Must declare the scalar variable "@MyVariable" vo Visual Studiu (C#) kvôli rozdielom v citlivosti veľkých a malých písmen.