srv_convert (API rozszerzonych procedur przechowywanych)

Dotyczy:SQL Server

Ważna

Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zamiast tego użyj integracji CLR.

Zmienia dane z jednego typu danych na inny.

Syntax

  
int srv_convert (  
SRV_PROC *  
srvproc  
,  
int  
srctype  
,  
void *  
src  
,  
DBINT  
srclen  
,  
int  
desttype  
,  
void *  
  dest  
,  
DBINT  
destlen  
);  

Arguments

srvproc
Jest wskaźnikiem do struktury SRV_PROC, która jest uchwytem dla konkretnego połączenia klienta. Struktura zawiera wszystkie informacje sterujące, które API Extended Stored Procedure wykorzystuje do zarządzania komunikacją i danymi między aplikacją a klientem. Jeśli uchwyt srvproc zostanie dostarczony, jest przekazywany do funkcji obsługi błędów API Extended Stored Procedure, gdy pojawi się błąd.

SCCTYPE
Określa typ danych danych do konwersji. Ten parametr może być dowolnym typem danych API Extended Store Procedure.

Src
Jest wskaźnikiem danych do konwersji. Ten parametr może być dowolnym typem danych API Extended Store Procedure.

srclen
Określa długość danych, wyrażonych w bajtach, które mają zostać przekonwertowane. Jeśli srclen wynosi 0, srv_convert umieszcza wartość zerową w zmiennej docelowej. Jeśli nie jest 0, ten parametr jest ignorowany dla typów danych o stałej długości, w takim przypadku zakłada się, że dane źródłowe są NULL. Dla danych typu danych SRVCHAR długość -1 oznacza, że ciąg znaków jest zakończony zerowo.

Desttype
Określa typ danych, do którego należy przekonwertować źródło. Ten parametr może być dowolnym typem danych API Extended Store Procedure.

dest
Jest wskaźnikiem do zmiennej docelowej, która odbiera przekonwertowane dane. Jeśli wskaźnik jest NULL, srv_convert wywołuje użytkownika podany obsługę błędów , jeśli występuje, i zwraca -1.

Jeśli typ destu jest SRVDECIMAL lub SRVNUMERIC, parametr dest musi być wskaźnikiem do struktury DBNUMERIC lub DBDECIMAL, z polami precyzji i skali struktury już ustawionymi na pożądane wartości. Możesz użyć DEFAULTPRECISION do określenia domyślnej precyzji oraz DEFAULTSCALE do określenia domyślnej skali.

Destlen
Określa długość zmiennej docelowej w bajtach. Ten parametr jest pomijany dla typów danych o stałej długości. Dla zmiennej docelowej typu SRVCHAR wartość destlen musi być całkowitą długością docelowej przestrzeni bufora. Długość -1 dla zmiennej docelowej typu SRVCHAR lub SRVBINARY wskazuje, że dostępna jest wystarczająca ilość miejsca. Dla zmiennej docelowej typu srvchar długość -1 powoduje, że ciąg znaków jest zakończony przez null.

Zwroty

Długość danych przekonwertowanych w bajtach, jeśli konwersja typu danych się powiedzie. Gdy srv_convert napotka żądanie konwersji, której nie obsługuje, wywołuje deweloperski adres, jeśli taki jest, ustawia globalny numer błędu i zwraca -1.

Remarks

Funkcja srv_willconvert decyduje, czy dana konwersja jest dozwolona.

Przeliczanie do przybliżonych numerycznych typów danych SRVFLT4 lub SRVFLT8 może skutkować utratą precyzji. Konwersja przybliżonych typów danych numerycznych SRVFLT4 lub SRVFLT8 do SRVCHAR lub SRVTEXT może również skutkować utratą precyzji.

Przeliczanie na SRVFLTx, SRVINTx, SRVMONEY, SRVMONEY4, SRVDECIMAL lub SRVNUMERIC może skutkować przepełnieniem, jeśli liczba jest większa niż maksymalna wartość miejsca docelowego, lub przepełnieniem, jeśli liczba jest mniejsza niż minimalna wartość miejsca docelowego. Jeśli wystąpi przesiąknięcie podczas konwersji na SRVCHAR lub SRVTEXT, pierwszy znak otrzymanej wartości zawiera gwiazdkę (*) wskazującą błąd.

Podczas konwersji SRVCHAR na SRVBINARY srv_convert interpretuje SRVCHAR jako szesnastkowy, niezależnie od tego, czy ciąg zawiera wiodące 0. Podczas konwersji SRVBINARY na SRVCHAR srv_convert tworzy ciąg szesnastkowy bez wiodącego 0. We wszystkich innych przypadkach konwersja na lub z typu danych SRVBINARY to prosta kopia bitowa.

W niektórych przypadkach przydatne może być przekształcenie typu danych na samego siebie. Na przykład konwersja SRVCHAR na SRVCHAR z destlenem -1 dodaje terminator zerowy do ciągu łańcucha.

Aby uzyskać opis typów danych oraz konwersji typów danych API Extended Store Procedure, zobacz Typy danych (Extended Stored Procedure API).

Funkcja srv_convert może zawiść z kilku powodów:

  • Wymagana konwersja nie jest dostępna.

  • Konwersja skutkowała obcięciem, przepełnieniem lub utratą precyzji zmiennej docelowej.

  • Podczas konwersji ciągu znaków na numer numeryczny wystąpił błąd składniowy.

Ważna

Powinieneś dokładnie przejrzeć kod źródłowy rozszerzonych procedur przechowywanych i przetestować skompilowane pliki DLL przed instalacją ich na serwerze produkcyjnym. Informacje o przeglądzie i testowaniu bezpieczeństwa znajdziesz na tej stronie internetowej Microsoft.