Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

T-SQL:Nie można przekazać połączonego ciągu jako argumentu do procedury składowanej

Instrukcja EXECUTE ma po prostu inną gramatykę niż inne instrukcje, takie jak SELECT i SET. Na przykład spójrz na sekcję składni na górze kolejnych dwóch stron.

Instrukcja EXECUTE:http://msdn.microsoft.com/en-us/ biblioteka/ms188332.aspx

Instrukcja SET:http://msdn.microsoft.com/en-us/ biblioteka/ms189484.aspx

Składnia EXECUTE akceptuje tylko wartość

Podczas gdy składnia SET akceptuje wyrażenie

Wartość jest po prostu stałą zakodowaną na stałe, ale wyrażenie zostanie ocenione. To tak, jakby mieć varchar „SELECT 1 + 1”. W tej chwili to tylko wartość varchar. Możesz jednak ocenić ciąg w ten sposób:

EXEC('SELECT 1 + 1')

Przypuszczam, że wszystko, na co zwracam uwagę, to to, że polecenie EXEC nie zezwala na wyrażenia z definicji, o czym już się widocznie dowiedziałeś. Nie wiem, jakie były intencje twórców T-SQL, kiedy zrobili to w ten sposób. Przypuszczam, że gramatyka wymknęłaby się spod kontroli, gdybyś mógł rzucać podzapytania w podzapytaniach na liście parametrów procedury składowanej.

Wyrażenie 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. Wstaw oświadczenie z podzapytaniami

  2. Błąd importu pliku CSV:Wartość kolumny zawierająca ogranicznik kolumny

  3. Kolejność znajdowania TSQL, która wystąpiła w ciągu 3 kolejnych miesięcy

  4. Wybierz wiersze nie w innej tabeli, zapytanie SQL Server

  5. Jak uzyskać pierwszą i ostatnią datę bieżącego roku?