Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

T-SQL:Не може да се предаде конкатениран низ като аргумент към съхранена процедура

Операторът EXECUTE просто има различна граматика от други изрази като SELECT и SET. Например, наблюдавайте секцията за синтаксис в горната част на следващите две страници.

Изявление EXECUTE:http://msdn.microsoft.com/en-us/ библиотека/ms188332.aspx

Изявление SET:http://msdn.microsoft.com/en-us/ библиотека/ms189484.aspx

Синтаксисът за EXECUTE приема само стойност

Докато синтаксисът за SET приема израз

Стойността е просто твърдо кодирана константа, но изразът ще бъде оценен. Това е като да имате varchar 'SELECT 1 + 1'. В момента това е просто стойност на varchar. Въпреки това можете да оцените низа по този начин:

EXEC('SELECT 1 + 1')

Предполагам, че всичко, което посочвам, е, че командата EXEC не позволява изрази по дефиниция, което очевидно вече сте разбрали. Не знам какво е било намерението на разработчиците на T-SQL къде, когато са го направили по този начин. Предполагам, че граматиката просто ще излезе извън контрол, ако ви е позволено да хвърляте подзаявки в подзаявките в списъка с параметри на съхранена процедура.

T-SQL израз:http://msdn.microsoft.com/en- us/library/ms190286.aspx



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MS SQL Server и JDBC:затворена връзка

  2. Какъв е добър начин да изрежете всички символи за интервал от низ в T-SQL без UDF и без CLR?

  3. Как да създадете текстов файл с помощта на sql скрипт с текст |

  4. Какви са предимствата на MERGE пред простото IF EXISTS?

  5. Тип текст на SQL Server спрямо тип данни varchar