私はXMLテンプレートを持っていますxp_sprintfを使用してテーブルの行値に基づいてXMLを構築する必要があります。さらに、表にはInt値とBit値があります。intプレースホルダ%d in xp_sprintf - SQL Server
表スキーマ:StudentMark:
CREATE TABLE [dbo].[StudentMark]
(
[StudentMarkId] [int] IDENTITY(1,1) NOT NULL,
[StudentId] [uniqueidentifier] NOT NULL,
[SubjectId] [uniqueidentifier] NOT NULL,
[Score] [int] NOT NULL,
[ScoreInfo] [xml] NOT NULL,
[GeneratedOn] [datetime2](2) NOT NULL,
[IsPass] [bit] NOT NULL,
CONSTRAINT [PK_StudentMark]
PRIMARY KEY CLUSTERED ([StudentMarkId] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
サンプル種データ
INSERT INTO [dbo].[StudentMark] ([StudentId], [SubjectId], [ScoreInfo], GeneratedOn], [Score], [IsPass])
VALUES ('FC3CB475-B480-4129-9190-6DE880E2D581', '0D72F79E-FB48-4D3E-9906-B78A9D105081', '<StudentMarkAttribute xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></StudentMarkAttribute>', '2017-08-10 10:10:15', 95, 1),
('0F4EF48C-93E3-41AA-8295-F6B0E8D8C3A2', '0D72F79E-FB48-4D3E-9906-B78A9D105081', '<StudentMarkAttribute xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></StudentMarkAttribute>', '2017-08-10 10:10:15', 100, 1),
('0F4EF48C-93E3-41AA-8295-F6B0E8D8C3A2', 'AB172272-D2E9-49E1-8040-6117BB6743DB', '<StudentMarkAttribute xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></StudentMarkAttribute>', '2017-08-16 09:06:20', 25, 0),
('FC3CB475-B480-4129-9190-6DE880E2D581', 'AB172272-D2E9-49E1-8040-6117BB6743DB', '<StudentMarkAttribute xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></StudentMarkAttribute>', '2017-08-16 09:06:20', 82, 1);
要件:私は、次のXMLとして行を変換し、適切なレコードの中で更新する必要がありますする必要があります列[dbo].[StudentMark].[ScoreInfo]
。
XMLテンプレート:
<ScoreInfo>
<StudentMarkId>%d</StudentMarkId>
<StudentId>%s</StudentId>
<SubjectId>%s</SubjectId>
<Score>%d</Score>
<GeneratedOn>%s</GeneratedOn>
<IsPass>%d</IsPass>
</ScoreInfo>
私は、次のエラーメッセージ
エラーを取得していますStackOverflowの質問
declare @name varchar(150) set @name = 'John' declare @score int set @score = 75 DECLARE @ret varchar(500) exec master..xp_sprintf @ret OUTPUT, 'Hello %s, your score is %d', @name, @score PRINT @ret
のいずれかから、次のサンプルコードを試してみました拡張ストアドプロシージャを実行しています:無効なパラメータの種類メッセージ 50003、レベル1、状態0
が親切にどのように指定したテーブル[dbo].[StudentMark]
でテンプレートXMLを構築するために私を助ける私はreffered、次の質問
私はどのように数値の書式指定子を使用する方法など
なぜxp_sprintfを使用しますか? –
これに代わる機能はありますか?はいの場合は私を助けてください... –
[FOR XML(SQL Server)](https://docs.microsoft.com/en-us/sql/relational-databases/xml/for-xml-sql)から始めてください。 -server) –