1
SQL ServerでXMLを使用することに慣れていないので、このストアドプロシージャを更新し、テーブルに挿入する前にフィールドに数式を適用するように変更するように求めました。ここでSQL ServerでXMLを扱う
は、いくつかのサンプルコードです:
CREATE PROCEDURE [spNewUser]
@UserInfo xml
AS
BEGIN
IF @UserInfo.exist('/UserInfo') = 1
BEGIN
DECLARE
@FirstName varchar(40),
@LastName varchar(40),
@Height varchar(10)
SELECT
@FirstName = Personal.query('FirstName').value('.','varchar(25)'),
@LastName = Personal.query('LastName').value('.','varchar(50)'),
@Height = NULLIF(Personal.query('HeightFt').value('.','varchar(3)') + '.' + Personal.query('HeightIn').value('.','varchar(3)'),'.')
FROM
@UserInfo.nodes('/UserInfo/Personal') AppInfo(Personal)
END
BEGIN
は今、私はすべてが起こって(一般的に)理解しています。私たちは何も使っていないので、高さ(フィートとインチ)を'FootValue'.'InchValue'
として保存していましたが、今は何かのために使いたいと思っています。これをintとして保存し、インチ数を保存します。私はHeightFt * 12 + HeightIn
をしたいと思いますが、私は変換して数学を行う最も安全な方法は不明です。 query('HeightFt').value(???)
ステートメントを実行する方法がわかりません。私はそれが存在しない場合は0を返すことを望むでしょう。
'DECIMAL(16,4)'フィート:) –
で身長のためにどのような意志HeightFt'または ''場合は、このリターンHeightIn'は存在しません? –
@Remus:ok、sure - ここには当てはまらない。それはちょうど私の「通常の」デフォルトです(請求書やそのようなもののため)...必要に応じて適応します:-) –