SQL。尝试在SQL上创建存储过程,但不确定我是否有正确的查询

时间:2016-07-17 18:13:55

标签: sql sql-server tsql

创建一个SQL存储过程,将字符串解析为先前未知数量的字段。输入将是

  1. 长度不确定的文字字符串;
  2. 一个分隔符,以字符串形式传递;
  3. 可以为空的列,如果相关,则将文本指示符作为单个字符串传递。
  4. 结果表将完全依赖于用作输入的字符串

    请帮忙,因为我无法弄清楚这一点。我知道这是错的,但我不知道从哪里开始。

    这是我到目前为止所尝试的内容:

    DECLARE @l INT, @c VARCHAR(MAX) = ''
    SELECT @l = MAX(LEN(n)) FROM AdventureWOrk
    DECLARE @s NVARCHAR(MAX) = '
    
    ;WITH cte AS
    
    
    )
    
    Insert INTO @Values (1, 'CGID', 'EENumber', 'EEYID', 'SSN' )   
    SELECT
    [Value], 
    [Value],
    Prod_Attributes.value('/Attribute[1]','varchar(MAX)') AS [CGID],
    Prod_Attributes.value('/Attribute[2]','varchar(MAX)') AS [EENUMBER], 
    Prod_Attributes.value('/Attribute[3]','varchar(MAX') AS [EYEID], 
    Prod_Attributes.value('/Attribute[4]','varchar(MAX') AS [SSN]
    

2 个答案:

答案 0 :(得分:0)

您可以使用以下语法创建存储过程:

body{
    background: navy;
}

您可以将已有的代码放在CREATE PROCEDURE usp_YourProcedure AS BEGIN -- Your logic END 语句中。

要执行存储过程,您可以执行以下操作:

BEGIN

要添加参数,只需在EXEC usp_YourProcedure 声明后声明它们。

CREATE PROCEDURE

然后用参数执行:

CREATE PROCEDURE usp_YourProcedure
(
    @TextField  VARCHAR(MAX), 
    @Delimeter  VARCHAR(1),
    @TextIndicator CHAR(1) = NULL
)
AS
BEGIN

END

MSDN概述了更多详情。

作为补充说明,请尝试保持变量名称的描述性和一致性,同时检查外壳。

答案 1 :(得分:0)

CREATE PROCEDURE <ProcedureName> 
    -- Add the parameters for the stored procedure here
    <Param1>, <Param2> ...
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
END
GO