【问题标题】:SQL. Trying to create a stored procedure on SQL, but not sure if I have the right querySQL。尝试在 SQL 上创建存储过程,但不确定我是否有正确的查询
【发布时间】:2016-11-20 08:02:15
【问题描述】:

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

  1. 未确定长度的文本字符串;
  2. 分隔符,作为字符串传递;
  3. 一个可以为空的列,如果相关,它会将文本指示符作为单个字符串传递。

结果表将完全取决于用作输入的字符串

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

这是我迄今为止尝试过的:

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]

【问题讨论】:

  • 请在发布前使用MSDN - Stored Procedures 满足语法要求。 MSDN 不仅胜过任何其他文档,而且您会知道术语是什么。

标签: sql sql-server tsql


【解决方案1】:

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

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

然后带参数执行:

EXEC usp_YourProcedure  'String literal, with commas, which will, be stripped out by the delimiter', ','

MSDN 概述了更多详细信息。

作为附加说明,请尽量保持变量名称的描述性和一致性,同时检查大小写。

【讨论】:

  • 感谢您的帮助!最后一步怎么做?可空字段部分
  • @MavsNation - 不客气。只需添加NULL 作为我的答案中显示的默认值。
【解决方案2】:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    相关资源
    最近更新 更多