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

exec не успя, защото името не е валиден идентификатор?

Опитайте това вместо това накрая:

exec (@query)

Ако нямате скобите, SQL Server приема, че стойността на променливата е име на съхранена процедура.

ИЛИ

EXECUTE sp_executesql @query

И не би трябвало да е заради FULL JOIN.
Но се надявам, че вече сте създали временните таблици:#TrafficFinal, #TrafficFinal2, #TrafficFinal3 преди това.

Моля, имайте предвид, че има съображения за производителност между използването на EXEC и sp_executesql. Тъй като sp_executesql използва принудително кеширане на изрази като sp.
Повече подробности тук .

От друга страна, има ли причина да използвате динамичен sql за този случай, когато можете да използвате заявката такава, каквато е, като се има предвид, че не правите никакви манипулации на заявката и я изпълнявате така, както е?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Избягване на SQL инжектиране без параметри

  2. OpenRowSet и OpenDataSet без права на sysadmin

  3. Как да направите заявка с group_concat в sql сървър

  4. Редки колони в SQL Server:Въздействие върху времето и пространството

  5. SQL Server 2008 предава тип данни като параметър за функция