sql >> Database >  >> RDS >> Sqlserver

T-SQL:kan aaneengeschakelde tekenreeks niet doorgeven als argument aan opgeslagen procedure

Het EXECUTE-statement heeft gewoon een andere grammatica dan andere statements zoals SELECT en SET. Bekijk bijvoorbeeld de syntaxissectie bovenaan de volgende twee pagina's.

EXECUTE-instructie:http://msdn.microsoft.com/en-us/ bibliotheek/ms188332.aspx

SET-instructie:http://msdn.microsoft.com/en-us/ bibliotheek/ms189484.aspx

De syntaxis voor EXECUTE accepteert alleen een waarde

Terwijl de syntaxis voor SET een expressie . accepteert

Een waarde is in feite gewoon een hard gecodeerde constante, maar een uitdrukking wordt geëvalueerd. Het is alsof je de varchar 'SELECT 1 + 1' hebt. Het is nu gewoon een varchar-waarde. U kunt echter evalueren de string als volgt:

EXEC('SELECT 1 + 1')

Ik veronderstel dat ik er alleen op wijs dat het EXEC-commando per definitie geen expressies toestaat, wat je blijkbaar al ontdekt hebt. Ik weet niet wat de bedoeling was van de ontwikkelaars van T-SQL toen ze het zo maakten. Ik veronderstel dat de grammatica gewoon uit de hand zou lopen als je subquery's binnen subquery's in de parameterlijst van een opgeslagen procedure zou mogen gooien.

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



  1. Hoe 2 lijsten vergelijken en samenvoegen in Python/MySQL?

  2. Hoe te groeperen op maand in PostgreSQL

  3. PHP - Hoe te verifiëren dat record succesvol is verwijderd

  4. Hoe voeg je PostgreSQL-stuurprogramma toe als afhankelijkheid in Maven?