sql >> Databáze >  >> RDS >> Sqlserver

T-SQL:Nelze předat zřetězený řetězec jako argument do uložené procedury

Příkaz EXECUTE má prostě jinou gramatiku než ostatní příkazy jako SELECT a SET. Podívejte se například na sekci syntaxe v horní části následujících dvou stránek.

EXECUTE příkaz:http://msdn.microsoft.com/en-us/ library/ms188332.aspx

Příkaz SET:http://msdn.microsoft.com/en-us/ library/ms189484.aspx

Syntaxe pro EXECUTE přijímá pouze hodnotu

Zatímco syntaxe SET přijímá výraz

Hodnota je v podstatě jen pevně zakódovaná konstanta, ale bude vyhodnocen výraz. Je to jako mít varchar 'SELECT 1 + 1'. Právě teď je to jen varchar hodnota. Můžete však hodnotit řetězec takto:

EXEC('SELECT 1 + 1')

Předpokládám, že vše, na co poukazuji, je to, že příkaz EXEC neumožňuje výrazy podle definice, což jste zřejmě již zjistili. Nevím, jaký byl záměr vývojářů T-SQL, kde, když to tak udělali. Předpokládám, že gramatika by se prostě vymkla z rukou, pokud byste mohli házet poddotazy v rámci poddotazů v seznamu parametrů uložené procedury.

T-SQL Expression:http://msdn.microsoft.com/en- us/library/ms190286.aspx



  1. Pokus o získání součtu odlišných hodnot pro odlišné soubory pro různé verze softwaru

  2. Jak odečíst sekundy od postgres datetime

  3. Jak napsat kód v Oracle SQL (jako 'CCYYMMDD' do 102)

  4. MySQL:Použití DATETIME jako primárního klíče