declare @customers xml
set @customers='<cus bpNo=''15'' MNo=''商户ID1'' MName=''商户名称1'' /><cus bpNo=''15'' MNo=''商户ID2'' MName=''商户名称2'' />'INSERT tb_ExternalEnterprise(BPNo,EnterpriseId,EnterpriseName)
SELECT R.c.value('@bpNo','CHAR(6)'),R.c.value('@MNo','VARCHAR(50)'),
R.c.value('@MName','NVARCHAR(30)')
FROM @customers.nodes('cus') R(c)请问我可以将该操作转换成一个sql语句吗?因为我想在程序中动态执行sql语句,而不想使用存储过程。谢谢
set @customers='<cus bpNo=''15'' MNo=''商户ID1'' MName=''商户名称1'' /><cus bpNo=''15'' MNo=''商户ID2'' MName=''商户名称2'' />'INSERT tb_ExternalEnterprise(BPNo,EnterpriseId,EnterpriseName)
SELECT R.c.value('@bpNo','CHAR(6)'),R.c.value('@MNo','VARCHAR(50)'),
R.c.value('@MName','NVARCHAR(30)')
FROM @customers.nodes('cus') R(c)请问我可以将该操作转换成一个sql语句吗?因为我想在程序中动态执行sql语句,而不想使用存储过程。谢谢
SELECT R.c.value('@bpNo','CHAR(6)'),R.c.value('@MNo','VARCHAR(50)'),
R.c.value('@MName','NVARCHAR(30)')
FROM @customers.nodes('cus') R(c)这里的@customers是你程序传来的参数,拼接下就OK了。
如何拼接?我这样写不行的。
SELECT R.c.value('@bpNo','CHAR(6)'),R.c.value('@MNo','VARCHAR(50)'),
R.c.value('@MName','NVARCHAR(30)')
FROM cast('<cus bpNo=''15'' MNo=''商户ID1'' MName=''商户名称1'' /><cus bpNo=''15'' MNo=''商户ID2'' MName=''商户名称2'' />' as xml).nodes('cus') R(c)
set @customers='<cus bpNo=''15'' MNo=''商户ID1'' MName=''商户名称1'' /><cus bpNo=''15'' MNo=''商户ID2'' MName=''商户名称2'' />'INSERT tb_ExternalEnterprise(BPNo,EnterpriseId,EnterpriseName)
SELECT R.c.value('@bpNo','CHAR(6)'),R.c.value('@MNo','VARCHAR(50)'),
R.c.value('@MName','NVARCHAR(30)')
FROM @customers.nodes('cus') R(c)
直接去运行你自己测试下,可以的话替换
set @customers='<cus bpNo=''15'' MNo=''商户ID1'' MName=''商户名称1'' /><cus bpNo=''15'' MNo=''商户ID2'' MName=''商户名称2'' />'部分就可以实现按程序输入替换了
R.c.value('@MName','NVARCHAR(30)')
FROM cast('<cus bpNo=''15'' MNo=''商户ID1'' MName=''商户名称1'' /><cus bpNo=''15'' MNo=''商户ID2'' MName=''商户名称2'' />' as xml).nodes('cus') R(c)我把变量放到sql语句里这样不行。不知道有没有可行的方法?
FROM (select cast('<cus bpNo=''15'' MNo=''商户ID1'' MName=''商户名称1''/>
<cus bpNo=''15'' MNo=''商户ID2'' MName=''商户名称2'' />' as xml) a)t
cross apply(select R.c.value('@bpNo','CHAR(6)') as bpNo,
R.c.value('@MNo','VARCHAR(50)') as MNo,
R.c.value('@MName','NVARCHAR(30)') as MName
from t.a.nodes('cus') R(c)) b/*
bpNo MNo MName
------ -------------------------------------------------- ------------------------------
15 商户ID1 商户名称1
15 商户ID2 商户名称2(2 行受影响)
{
return "declare @customers xml \r\n" +
"set @customers='" + xmlstr + " \r\n" +
"INSERT tb_ExternalEnterprise(BPNo,EnterpriseId,EnterpriseName) \r\n" +
" SELECT R.c.value('@bpNo','CHAR(6)'),R.c.value('@MNo','VARCHAR(50)'),\r\n" +
" R.c.value('@MName','NVARCHAR(30)')\r\n" +
" FROM @customers.nodes('cus') R(c)\r\n"
}写一个这样的过程,应该知道怎么用了吧