Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL。正在尝试在SQL上创建存储过程,但不确定查询是否正确_Sql_Sql Server_Tsql - Fatal编程技术网

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

SQL。正在尝试在SQL上创建存储过程,但不确定查询是否正确,sql,sql-server,tsql,Sql,Sql Server,Tsql,创建一个SQL存储过程,将字符串解析为以前未知数量的字段。投入将是 长度不确定的文本字符串 分隔符,作为字符串传递 一个可为空的列,如果相关,它将作为单个字符串传递文本指示符 结果表将完全依赖于用作输入的字符串 请帮忙,因为我想不出来。我知道这是错误的,但我不知道从哪里开始 以下是我迄今为止所尝试的: DECLARE @l INT, @c VARCHAR(MAX) = '' SELECT @l = MAX(LEN(n)) FROM AdventureWOrk DECLARE @s NVARCHA

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

  • 长度不确定的文本字符串
  • 分隔符,作为字符串传递
  • 一个可为空的列,如果相关,它将作为单个字符串传递文本指示符 结果表将完全依赖于用作输入的字符串

    请帮忙,因为我想不出来。我知道这是错误的,但我不知道从哪里开始

    以下是我迄今为止所尝试的:

    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]
    

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

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

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

    EXEC usp_YourProcedure
    
    要添加参数,只需在
    CREATE过程
    声明后声明即可

    CREATE PROCEDURE usp_YourProcedure
    (
        @TextField  VARCHAR(MAX), 
        @Delimeter  VARCHAR(1),
        @TextIndicator CHAR(1) = NULL
    )
    AS
    BEGIN
    
    END
    
    然后使用参数执行:

    EXEC usp_YourProcedure  'String literal, with commas, which will, be stripped out by the delimiter', ','
    
    详情请参阅

    另外,请注意,尽量保持变量名的描述性和一致性,同时检查大小写。

    CREATE PROCEDURE
    
    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
    
    --在此处添加存储过程的参数 , ... 像 开始 --已添加SETNOCOUNT以防止额外的结果集干扰SELECT语句。 不计数; --在此处插入过程的语句 终止 去
    请在发布前先使用语法要求。MSDN不仅胜过任何其他文档,而且您将知道术语是什么。感谢您的帮助!最后一步该怎么做?可空字段part@MavsNation-不客气。只需添加
    NULL
    作为默认值,如我的答案所示。