问题描述
发票表
ID | INVOICE_NO |
--------------------
1 | 1000000001 |
2 | 1000000002 |
3 | 1000000003 |
invoice_details表
ID | INVOICE_ID | DESCRIPTION | AMOUNT |
-------------------------------------------
1 | 1 | Electricity | 3500.00|
2 | 1 | Telephone | 750.00|
3 | 2 | Car Service | 6500.00|
4 | 2 | Other | 1500.00|
我想使用PHP脚本将上述详细信息导出到sql Server存储过程。发送时,我想从invoices
表中选择第一行,并从invoice_details
表中选择相关的两行(类似)。因此invoice_details
必须位于数组之内。
我的问题是
- 如何使sql Server存储过程完成此任务?
- 如何发送这些详细信息(我可以使用数组将发票详细信息与发票数据一起发送吗?)
请指导是否有人对此有想法。
解决方法
根据@AlwaysLearning给出的想法,我能够使用XML解决我的问题。
CREATE Procedure [dbo].[insert_xml_data]
(
@details AS XML = '
<details>
<invoice_details>
<line_id>3</line_id>
<account_code>5000</account_code>
<description>Other purchases</description>
<amount>15250.00</amount>
</invoice_details>
</details>
';
)
As
BEGIN
INSERT INTO xml_data (account_code,description,amount)
SELECT
t1.c.value('account_code[1]','varchar(100)') As account_code,t1.c.value('description[1]','varchar(50)') as description,t1.c.value('amount[1]','varchar(50)') as amount,FROM @details.nodes('/details/invoice_details') t1(c)
END