StoredProcedureInmsqlTomySql
我在MSSQl中有一个存储过程,我想在我的sql中编写它, 请给我任何帮助或建议。我无法在Mysql中使用XML函数 存储过程:StoredProcedureInmsqlTomySql,mysql,sql-server,stored-procedures,Mysql,Sql Server,Stored Procedures,我在MSSQl中有一个存储过程,我想在我的sql中编写它, 请给我任何帮助或建议。我无法在Mysql中使用XML函数 存储过程: ALTER PROCEDURE uspGetProductDetailsCSV ( @sku NVARCHAR(MAX) ) AS BEGIN - SELECT T.C.value('.', 'NVARCHAR(100)') AS [SK
ALTER PROCEDURE uspGetProductDetailsCSV (
@sku NVARCHAR(MAX)
)
AS
BEGIN
-
SELECT T.C.value('.', 'NVARCHAR(100)') AS [SKU]
INTO #tblPersons
FROM (SELECT CAST ('<Name>' + REPLACE (@sku, ',', '</Name><Name>')
+ '</Name>' AS XML) AS [Products]) AS A
CROSS APPLY Products.nodes('/Name') as T(C)
SELECT *
FROM ProductInformation Pr
WHERE EXISTS (SELECT Name FROM #tblPersons tmp WHERE tmp.SKU
= case when len(tmp.SKU) = 11 then Product_No+Colour_Code+Size_Code
when len(tmp.SKU) = 8 then Product_No+Colour_Code
when len(tmp.sku) = 6 then Product_No end)
DROP TABLE #tblPersons
END
编辑:我无法编写存储过程的XML部分,因为我在Mysql中粘贴了相同的代码,它不会创建存储过程
错误:>不能转换为XML我不相信XML在MySql中是有效的类型。试着把它作为一个VARCHAR 所以,只需删除强制转换…我还认为您必须使用CONCAT而不是+并将列周围的[]更改为ticks 因此,不是:
FROM (SELECT CAST ('<Name>' + REPLACE (@sku, ',', '</Name><Name>')
+ '</Name>' AS XML) AS [Products]) AS A
尝试:
表现出一些努力。stackoverflow不是一种编码服务。@Bleach谢谢你,我已经努力写了这篇文章,但是在将结果捕获到临时表和XMl语句中时,正如我在帖子中提到的那样,我会准确地显示你所做的尝试和你被卡住的确切位置。显示您的MySQL存储过程。@Ganesh_Devlekar您的意思是至少放置名称空间:您是否尝试在MySQL中创建临时表,@Ganesh_Devlekar您没有任何意义。OP承认他不能解析XML部分。如果你能帮忙,你可以。
FROM (SELECT CONCAT('<Name>' , REPLACE(@sku, ',', '</Name><Name>'),
'</Name>') AS `Products`) AS A