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

Użyj domyślnej wartości kolumny w procedurach składowanych

Nie używasz domyślnego w sposób, w jaki jest przeznaczony. Jest to coś, co SQL Server ocenia wewnętrznie podczas wstawiania (lub potencjalnie aktualizacji, jeśli default słowo kluczowe jest używane).

Nie jest przeznaczony do użycia w SELECT . Weź pod uwagę, że może zawierać dowolne wyrażenia, takie jak DEFAULT CAST(GETDATE() AS INT) % 2 lub wywołanie skalarnego UDF. Rzutowanie z ciągu na bit nie oceni tych wyrażeń za Ciebie.

Jedyny sposób, w jaki możesz zrobić coś takiego, to ocenić to osobno

DECLARE @B            BIT
        , @Definition NVARCHAR(max)

SELECT @Definition = N'SELECT @B = '
                     + object_definition(default_object_id)
FROM   sys.columns
WHERE  NAME = 'value'
       AND object_id = OBJECT_ID('dbo.t2')

EXEC sys.sp_executesql
  @Definition,
  N'@B BIT OUTPUT',
  @B = @B OUTPUT

SELECT t1.*,
       ISNULL(t2.value, @B)
FROM   t1
       LEFT JOIN t2
              ON t1.id = t2.id 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy mogę obliczyć, ile dni weekendowych jest między dwiema datami w SQL Server?

  2. Dlaczego podczas nawiązywania połączenia z programem SQL Server wystąpił błąd związany z siecią lub specyficzny dla wystąpienia?

  3. Przekształć wynik pionowy w tryb poziomy (T-SQL)

  4. Crystal Report pokazuje tekst HTML, ale punktory się nie wyświetlają. Czemu?

  5. Jak poprawnie łączyć kolumny za pomocą T-SQL?