【发布时间】:2013-06-12 09:40:51
【问题描述】:
谁能帮我把下面的 MS-SQL sp 写到 MySQL sp,
使用这个:
CREATE PROCEDURE sp_InputWork
@_DelimitedString nvarchar(MAX)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @_DataRow nvarchar(MAX)
DECLARE @_DescriptionOfWorkDone nvarchar(MAX)
DECLARE @_TemporaryStorage nvarchar(MAX)
DECLARE @_QTY int
DECLARE @_Total int
DECLARE @_CurrentField int
WHILE CHARINDEX(';', @_DelimitedString) > 0
BEGIN
SET @_DataRow = CAST(SUBSTRING(@_DelimitedString, 0, CHARINDEX(';', @_DelimitedString)) AS nvarchar(MAX))
SET @_CurrentField = 1
WHILE CHARINDEX(',', @_DataRow) > 0
BEGIN
SET @_TemporaryStorage = CAST(SUBSTRING(@_DataRow, 0, CHARINDEX(',', @_DataRow)) AS nvarchar(MAX))
IF @_CurrentField = 1
SET @_QTY = CAST(@_TemporaryStorage AS int)
IF @_CurrentField = 2
SET @_DescriptionOfWorkDone = @_TemporaryStorage
IF @_CurrentField = 3
SET @_Total = CAST(@_TemporaryStorage AS int)
SET @_DataRow = SUBSTRING(@_DataRow, CHARINDEX(',', @_DataRow) + 1, LEN(@_DataRow))
SET @_CurrentField = @_CurrentField + 1
END
INSERT INTO tblWorkDone (QTY, DescriptionOfWorkDone, Total) VALUES (@_QTY, @_DescriptionOfWorkDone, @_Total)
SET @_DelimitedString = SUBSTRING(@_DelimitedString, CHARINDEX(';', @_DelimitedString) + 1, LEN(@_DelimitedString))
END
END
【问题讨论】:
-
您遇到了什么错误,您尝试过什么?
-
@RaviSingh 我正在做的是将一个字符串传递给 SP,例如 (a, test,100.00, 1;b,test1,150.00, c;) 即由逗号分隔的字段和由分隔的值设置分号,我希望 SP 循环通过值集,然后通过字段然后插入到表中。我还没有在 Mysql 中尝试过这个。我从一个站点 [link]vbforums.com/… 得到了这个 sp
-
这应该可以在 mysql 中进行更改:1) 将
charindex更改为instr()。 2) 使用IF..THEN而不是IF。 -
@RaviSingh while 循环怎么样,在 mysql 中就像 while .....do .... end while;和 nvarchar 到 text 或 blob???。会有用吗???
-
是的,那个也是。
标签: mysql sql-server string delimiter