sql >> Databasteknik >  >> RDS >> Sqlserver

T-SQL:Kan inte skicka sammanfogad sträng som argument till lagrad procedur

EXECUTE-satsen har helt enkelt en annan grammatik än andra satser som SELECT och SET. Titta till exempel på syntaxavsnittet överst på följande två sidor.

EXECUTE-sats:http://msdn.microsoft.com/en-us/ library/ms188332.aspx

SET-sats:http://msdn.microsoft.com/en-us/ library/ms189484.aspx

Syntaxen för EXECUTE accepterar bara ett värde

Medan syntaxen för SET accepterar ett uttryck

Ett värde är i princip bara en hårdkodad konstant, men ett uttryck kommer att utvärderas. Det är som att ha varchar 'SELECT 1 + 1'. Det är bara ett varcharvärde just nu. Du kan dock utvärdera strängen så här:

EXEC('SELECT 1 + 1')

Jag antar att allt jag påpekar är att EXEC-kommandot inte tillåter uttryck per definition, vilket du tydligen redan har upptäckt. Jag vet inte vad T-SQL-utvecklarna hade för avsikt när de gjorde det så. Jag antar att grammatiken bara skulle gå ur hand om du fick skicka underfrågor inom underfrågor i parameterlistan för en lagrad procedur.

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



  1. Förstå pdo mysql-transaktioner

  2. hur man hämtar data från sql-serverdatabasen i php utan att uppdatera sidan

  3. Hur hittar man icke-existerande data från en annan tabell genom att JOIN?

  4. SQL-fråga för att få senaste priser, beroende på datum