sql >> Database >  >> RDS >> Sqlserver

Gebruik COLUMNPROPERTY() om kolom- of parameterinformatie in SQL Server te retourneren

In SQL Server, de COLUMNPROPERTY() functie retourneert kolom- of parameterinformatie.

U kunt het bijvoorbeeld gebruiken om informatie terug te geven over een kolom in een tabel, een parameter voor een opgeslagen procedure, enz.

Het accepteert drie argumenten:de ID van de tabel of procedure, de toepasselijke kolom of parameter en de eigenschap waarover u informatie wilt.

Syntaxis

De syntaxis gaat als volgt:

COLUMNPROPERTY ( id , column , property )

Voorbeeld 1 – Een tabel opvragen

In dit voorbeeld krijg ik informatie over een kolom in een tabel.

USE Music;
SELECT 
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];

Resultaat:

+----------+
| Result   |
|----------|
| 0        |
+----------+

In dit geval staat de ArtistId-kolom geen NULL-waarden toe.

Laten we overschakelen naar een andere kolom:

SELECT 
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'AllowsNull') AS [ActiveFrom],
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Precision') AS [Precision],
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Scale') AS [Scale];

Resultaat:

+--------------+-------------+---------+
| ActiveFrom   | Precision   | Scale   |
|--------------+-------------+---------|
| 1            | 10          | 0       |
+--------------+-------------+---------+

In dit geval staat de ActiveFrom-kolom wel NULL-waarden toe. Het heeft ook een precisie van 10 en een schaal van 0.

Je zult merken dat ik de OBJECT_ID() . gebruik functie om de ID van de tabel te retourneren. Zonder deze functie zou ik de ID moeten weten (of ik zou nog een zoekopdracht moeten doen om de ID te krijgen).

Dit is wat OBJECT_ID() retourneert in het bovenstaande voorbeeld:

SELECT OBJECT_ID('Artists') AS Result;

Resultaat:

+-----------+
| Result    |
|-----------|
| 885578193 |
+-----------+

Dus nu we de ID weten, kunnen we die doorgeven aan de COLUMNPROPERTY() functie in plaats daarvan:

SELECT 
  COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom],
  COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision],
  COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];

Resultaat:

+--------------+-------------+---------+
| ActiveFrom   | Precision   | Scale   |
|--------------+-------------+---------|
| 1            | 10          | 0       |
+--------------+-------------+---------+

Voorbeeld 2 – Een procedure opvragen

In dit voorbeeld krijg ik informatie over een parameter van een opgeslagen procedure.

USE Music;
SELECT 
  COLUMNPROPERTY(
      OBJECT_ID('dbo.uspGetAlbumsByArtist'), 
      '@ArtistId', 
      'IsOutParam') AS [Result];

Resultaat:

+----------+
| Result   |
|----------|
| 0        |
+----------+

Het is dus precies dezelfde syntaxis. In dit geval is de parameter @ArtistId is geen uitvoerparameter.

Volledige lijst met opties

Hier is een volledige lijst met argumenten die u kunt doorgeven aan COLUMNPROPERTY() op het moment van schrijven:

  • AllowsNull
  • Kolom-ID
  • FullTextTypeColumn
  • GeneratedAlwaysType
  • IsColumnSet
  • IsBerekend
  • IsCursorType
  • IsDeterministisch
  • IsFulltextIndexed
  • IsHidden
  • IsIdentity
  • IdNotForRepl
  • IsIndexable
  • IsOutParam
  • IsPrecise
  • IsRowGuidCol
  • IsSparse
  • IsSystemVerified
  • IsXmlIndexable
  • Precisie
  • Schaal
  • Statistische semantiek
  • SystemDataAccess
  • Gebruikersgegevenstoegang
  • GebruiktAnsiTrim

Zie de Microsoft-documentatie voor een gedetailleerde uitleg van elke eigenschap.

Zie ook OBJECTPROPERTYEX() voor een vergelijkbare functie die informatie retourneert over objecten met een schema in plaats van databases, en DATABASEPROPERTYEX() die eigenschapsinformatie voor databases retourneert.


  1. Gebruik van Sqlite Stored Procedure in Android

  2. Door komma's gescheiden kolomwaarde converteren naar rijen

  3. Hoe items uit de sqlite-database te verwijderen met de SQLiteOpenHelper-klasse

  4. YEAR() Voorbeelden in SQL Server (T-SQL)