1
メインテーブルに挿入する前にデータを検証するのを手伝ってください。SQL Serverのメインテーブルに挿入する前に各列を検証する方法
私はさまざまなコードを含むXMLを読んでいますが、その値がマスターテーブルに存在する場合はメインテーブルに値を挿入する必要があります。そうでなければxmlタグ名でエラーをスローする必要がありますマスター表には値がありません。
マスターテーブル:
titleMaster
AccountTypeMaster
RiskMaster
BranchMaster
Citymaster
CustomerDetails
メインテーブル:
CustomerMainTable
表構造& SQLコード:
Declare @CustomerData TABLE
(
CustomerID int NULL,
Citycode varchar(20) NULL,
TitleCode int NULL,
AccountTypeCode varchar(20) NULL,
AccRiskCode varchar(20)NULL,
BankBranchCode varchar(20) NULL
)
DECLARE @XML AS XML,@hDoc AS INT, @SQL NVARCHAR (MAX)
SET @XML = N' <Customer>
<CustomerID>1</CustomerID>
<Citycode>BBY</Citycode>
<TitleCode>1</TitleCode>
<AccountTypeCode>SV</AccountTypeCode>
<AccRiskCode>H</AccRiskCode>
<BankBranchCode>BAU001</BankBranchCode>
</Customer>'
INSERT INTO @CustomerData
SELECT
ID1 = XC.value('CustomerID[1]', 'int'),
CityCode = XC.value('Citycode[1]', 'varchar(20)'),
TitleCode = XC.value('TitleCode[1]', 'int'),
AccountTypeCode = XC.value('AccountTypeCode[1]', 'varchar(20)'),
AccRiskCode = XC.value('AccRiskCode[1]', 'char'),
BankBranchCode = XC.value('BankBranchCode[1]', 'varchar(20)')
FROM
@XML.nodes('/Customer') AS XT(XC)
SELECT
ISNULL(B.CustomerName,'Error'), ISNULL(C.CityName,'Error'),
ISNULL(D.Titlename,'Error'), ISNULL(E.AccountTypeName,'Error'),
ISNULL(F.AccRiskName,'Error'), ISNULL(G.BranchName,'Error')
FROM
@CustomerData A
LEFT OUTER JOIN
CustomerDetails B ON A.CustomerID = B.CustomerId
LEFT OUTER JOIN
Citymaster C ON A.Citycode = C.CityCode
LEFT OUTER JOIN
titleMaster D ON A.TitleCode = D.TitleCode
LEFT OUTER JOIN
AccountTypeMaster E ON A.AccountTypeCode = E.AccountTypeCode
LEFT OUTER JOIN
RiskMaster F ON A.AccRiskCode = F.AccRiskCode
LEFT OUTER JOIN
BranchMaster G ON A.BankBranchCode = G.BankBranchCode
あなたの投稿を編集してください。これは、「私はさまざまなコードを含んでいます。」という言葉は、「an」と「containing」の間にあるはずです。 –
@Dan Bracuk編集済み –