Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A pontosság megőrzése érdekében a decimális vagy numerikus típusokat mindig szövegként olvassuk be a pontos pontosság és skálázás érdekében. Ha bármely érték kisebb 1-nél, a kezdő nulla hiányzik. A pénz és a smallmoney mezők ugyanazok, mivel ezek olyan decimális mezők, amelyek fix skálája 4.
Kezdő nullák hozzáadása, ha hiányzik
Az 5.6.0-s verziótól kezdve a beállítás FormatDecimals hozzáadódik az sqlsrv kapcsolati és utasítási szintjeihez, így a felhasználó formázhatja a decimális sztringeket. Ez a beállítás logikai értéket (igaz vagy hamis) vár, és csak a beolvasott eredmények decimális vagy numerikus értékeinek formázására van hatással. Más szóval a FormatDecimals beállításnak nincs hatása más műveletekre, például beszúrásra vagy frissítésre.
Alapértelmezés szerint FormatDecimalshamis. Ha igaz értékre van állítva, a program az 1-nél kisebb decimális értékekhez hozzáadja a decimális sztringek kezdő nulláit.
Tizedesjegyek számának konfigurálása
Bekapcsolt FormatDecimals állapotban egy másik lehetőség, DecimalPlaces amellyel a felhasználók konfigurálhatják a tizedesjegyek számát a pénz és a kisösszegű pénz adatok megjelenítésekor. A(z) [0, 4] tartományban lévő egész értékeket fogadja el, és a megjelenítésekor kerekítés is előfordulhat. A mögöttes pénzadatok azonban változatlanok maradnak.
Mindkét beállítás beállítható kapcsolati vagy utasításszintre, és az utasításbeállítás mindig felülbírálja a megfelelő kapcsolati beállítást. Vegye figyelembe, hogy a lehetőség DecimalPlaces a pénzadatokat érinti, és FormatDecimals a tényleges érvénybe lépéshez DecimalPlaces igaz értékre kell állítani. Függetlenül a DecimalPlaces beállítástól, a formázás ki van kapcsolva.
Megjegyzés:
Mivel a pénz- vagy kis pénzmezők 4-es skálával rendelkeznek, a DecimalPlaces érték negatív számra vagy 4-nél nagyobbra való beállítása figyelmen kívül hagyják. A számítások bemeneteként nem ajánlott formázott pénzadatokat használni.
Példa – egyszerű lekérés
Az alábbi példa bemutatja, hogyan használhatja az új beállításokat egy egyszerű beolvasásban.
<?php
$username = 'myusername';
$password = '<password>';
$tableName = 'mytable';
$connectionInfo = array("UID" => $username, "PWD" => $password, "Database" => "myDB", "FormatDecimals" => true);
$server = "myServer"; // IP address also works
$conn = sqlsrv_connect( $server, $connectionInfo);
$numDigits = 2;
$query = "SELECT money1 FROM $tableName";
$options = array("DecimalPlaces" => $numDigits);
$stmt = sqlsrv_prepare($conn, $query, array(), $options);
sqlsrv_execute($stmt);
if (sqlsrv_fetch($stmt)) {
$field = sqlsrv_get_field($stmt, 0);
echo $field; // expect a numeric value string with 2 decimal places
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>
Példa – a kimeneti paraméter formázása
Ha egy decimális vagy numerikus mezőt ad vissza kimeneti paraméterként, a visszaadott érték normál varchar sztringnek minősül. Ha azonban az SQLSRV_SQLTYPE_DECIMAL vagy az SQLSRV_SQLTYPE_NUMERIC van megadva, akkor FormatDecimals értékét igazra állíthatja, hogy ne hiányozzon a kezdő nulla a numerikus karakterlánc értékéből. További információkért olvassa el Kimeneti paraméterek lekérése az SQLSRV-illesztőprogram használatával.
Az alábbi példa bemutatja, hogyan formázható egy tárolt eljárás kimeneti paramétere, amely decimális (8,4) értéket ad vissza.
$outString = '';
$outSql = '{CALL myStoredProc(?)}';
$stmt = sqlsrv_prepare($conn,
$outSql,
array(array(&$outString, SQLSRV_PARAM_OUT, null, SQLSRV_SQLTYPE_DECIMAL(8, 4))),
array('FormatDecimals' => true));
if (sqlsrv_execute($stmt)) {
echo $outString; // expect a numeric value string with no missing leading zero
}
Lásd még:
Decimális szövegek és pénzértékek formázása (PDO_SQLSRV meghajtó)