Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Important
Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Använd istället CLR-integration.
Ändrar data från en datatyp till en annan.
Syntax
int srv_convert (
SRV_PROC *
srvproc
,
int
srctype
,
void *
src
,
DBINT
srclen
,
int
desttype
,
void *
dest
,
DBINT
destlen
);
Arguments
srvproc
Är en pekare till den SRV_PROC struktur som är handtaget för en viss klientanslutning. Strukturen innehåller all kontrollinformation som Extended Stored Procedure API använder för att hantera kommunikation och data mellan applikationen och klienten. Om srvproc-handtaget tillhandahålls skickas det till felhanteringsfunktionen för Extended Stored Procedure API när ett fel uppstår.
srctype
Specificerar datatypen för den data som ska konverteras. Denna parameter kan vara någon av datatyperna från Extended Store Procedure API.
Src
Är en pekare till den data som ska konverteras. Denna parameter kan vara någon av datatyperna från Extended Store Procedure API.
srclen
Specificerar längden, i bytes, på den data som ska konverteras. Om srclen är 0 placerar srv_convert ett nollvärde i destinationsvariabeln. Om den inte är 0 ignoreras denna parameter för datatyper med fast längd, i vilket fall källdata antas vara NULL. För data av SRVCHAR-datatypen indikerar en längd på -1 att strängen är nullterminerad.
desttype
Specificerar vilken datatyp som ska konvertera källkoden till. Denna parameter kan vara någon av datatyperna från Extended Store Procedure API.
dest
Är en pekare till destinationsvariabeln som tar emot konverterad data. Om denna pekare är NULL anropar srv_convert användarens felhanterare, om sådan finns, och returnerar -1.
Om desttypen är SRVDECIMAL eller SRVNUMERISK måste dest-parametern vara en pekare till en DBNUMERISK eller DBDECIMAL struktur där precisions- och skalfälten för strukturen redan är satta till önskade värden. Du kan använda DEFAULTPRECISION för att ange en standardprecision, och DEFAULTSCALE för att ange en standardskala.
Destlen
Specificerar längden, i bytes, på destinationsvariabeln. Denna parameter ignoreras för datatyper med fast längd. För en destinationsvariabel av typen SRVCHAR måste värdet av destlen vara den totala längden på destinationsbuffertutrymmet. En längd på -1 för en destinationsvariabel av typen SRVCHAR eller SRVBINARY indikerar att det finns tillräckligt med utrymme tillgängligt. För en destinationsvariabel av typen srvchar orsakar en längd på -1 teckensträngen att bli null-terminerad.
Returns
Längden på den konverterade datan, i bytes, om datatypskonverteringen lyckas. När srv_convert stöter på en begäran om en konvertering som den inte stödjer, anropar den utvecklarens felhanterare, om sådan finns, sätter ett globalt felnummer och returnerar -1.
Remarks
Funktionen srv_willconvert avgör om en viss konvertering är tillåten.
Att konvertera till de ungefärliga numeriska datatyperna SRVFLT4 eller SRVFLT8 kan leda till viss förlust av precision. Konvertering från de ungefärliga numeriska datatyperna SRVFLT4 eller SRVFLT8 till SRVCHAR eller SRVTEXT kan också leda till viss förlust av precision.
Att konvertera till SRVFLTx, SRVINTx, SRVMONEY, SRVMONEY4, SRVDECIMAL eller SRVNUMERIC kan leda till överflöd om numret är större än destinationens maximala värde, eller underflöde om talet är mindre än destinationens minimivärde. Om överflöd uppstår vid konvertering till SRVCHAR eller SRVTEXT innehåller det första tecknet i det resulterande värdet en asterisk (*) för att ange felet.
När SRVCHAR konverteras till SRVBINÄR tolkar srv_convert SRVCHAR som hexadecimalt, oavsett om strängen innehåller en ledande 0 eller inte. När SRVBINARY konverteras till SRVCHAR skapas srv_convert en hexadecimal sträng utan en ledande 0. I alla andra fall är en konvertering till eller från SRVBINARY-datatypen en rak bitkopia.
I vissa fall kan det vara användbart att konvertera en datatyp till sig själv. Till exempel, att konvertera SRVCHAR till SRVCHAR med en definition av -1 lägger till en null-terminator till en sträng.
För en beskrivning av datatyper och Extended Store Procedure API:s datatypkonverteringar, se Data Types (Extended Stored Procedure API).
Den srv_convert funktionen kan gå sönder av flera skäl:
Den begärda konverteringen är inte tillgänglig.
Omvandlingen resulterade i trunkering, överflöd eller förlust av precision i destinationsvariabeln.
Ett syntaxfel uppstod vid konvertering av en teckensträng till en numerisk datatyp.
Important
Du bör noggrant granska källkoden för utökade lagrade procedurer, och du bör testa de kompilerade DLL:erna innan du installerar dem på en produktionsserver. För information om säkerhetsgranskning och testning, se denna Microsoft-webbplats.