-5

How I can make a stored procedure for following code.

use Test    
DECLARE @Str VARCHAR(120)    
SET @Str = 'company name'    
DECLARE @End INT    
DECLARE @Split INT    
SET @Split = 40

declare @SomeTable table
(
  Content varchar(120)
)

WHILE (LEN(@Str) > 0)    
BEGIN
    IF (LEN(@Str) > @Split)
    BEGIN
        SET @End = LEN(LEFT(@Str, @Split)) - CHARINDEX(' ', REVERSE(LEFT(@Str, @Split)))

        INSERT INTO @SomeTable VALUES (RTRIM(LTRIM(LEFT(LEFT(@Str, @Split), @End))))

        SET @Str = SUBSTRING(@Str, @End + 1, LEN(@Str))
    END
    ELSE
    BEGIN
        INSERT INTO @SomeTable VALUES (RTRIM(LTRIM(@Str)))
        SET @Str = ''
    END
END

SELECT *
FROM @SomeTable
4

2 に答える 2

2

これをストアド プロシージャに変換する最も簡単なケースは次のとおりです。

use Test    

CREATE PROCEDURE [dbo].[IGotSomeoneonStackOverflowToWriteThisforMe]
AS

DECLARE @Str VARCHAR(120)    
SET @Str = 'company name'    
DECLARE @End INT    
DECLARE @Split INT    
SET @Split = 40

declare @SomeTable table
(
  Content varchar(120)
)

WHILE (LEN(@Str) > 0)    
BEGIN
    IF (LEN(@Str) > @Split)
    BEGIN
        SET @End = LEN(LEFT(@Str, @Split)) - CHARINDEX(' ', REVERSE(LEFT(@Str, @Split)))

        INSERT INTO @SomeTable VALUES (RTRIM(LTRIM(LEFT(LEFT(@Str, @Split), @End))))

        SET @Str = SUBSTRING(@Str, @End + 1, LEN(@Str))
    END
    ELSE
    BEGIN
        INSERT INTO @SomeTable VALUES (RTRIM(LTRIM(@Str)))
        SET @Str = ''
    END
END

SELECT *
FROM @SomeTable

GO

EXEC [dbo].[IGotSomeoneonStackOverflowToWriteThisforMe]
于 2013-10-24T13:01:01.483 に答える