我在mssql中有一个存储过程,我想在我的sql中写它,请给我任何帮助或建议。我不能在mysql中使用xml函数。
存储过程:
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<
1条答案
按热度按时间i2byvkas1#
我不相信xml在mysql中是有效的类型。试着把它当作一个varchar。
所以,只需删除强制转换…我还认为您必须使用concat而不是+并将列周围的[]改为ticks。
所以不是:
尝试: