相关疑难解决方法(0)

存储过程中的多值日期参数?

我正在尝试使用存储过程来接受日期的多值参数.这不是在SSRS中,但我试图使用与它相同的方法:

ALTER PROCEDURE spSelectPlacementData
(
    @ClientID           SMALLINT,
    @SourceFileDates    VARCHAR(MAX)
)
AS
BEGIN
    SELECT (snip)
    FROM [APS].[dbo].[Account] A
    WHERE ClientID = @ClientID
    AND A.[SourceFileDate] IN (SELECT * FROM dbo.Split(@SourceFileDates))
END
Run Code Online (Sandbox Code Playgroud)

我在SSRS报告多值参数上使用此方法和INT和VARCHAR字段.

这是我用来连接SourceFileDates的代码:

    string sourceFileDates = "";

    foreach (DateTime file in job.sourceFiles)
    {
        if (file == job.sourceFiles.Last())
        {
            sourceFileDates += "'" + file.ToString("d") + "'";
        }
        else
        {
            sourceFileDates += "'" + file.ToString("d") + "', ";
        }
    }

    selectRunCommand = new SqlCommand("spSelectPlacementData", sqlConnection);
    selectRunCommand.CommandType = CommandType.StoredProcedure;
    selectRunCommand.Parameters.Add("@ClientID", SqlDbType.SmallInt);
    selectRunCommand.Parameters["@ClientID"].Value = job.clientID;
    selectRunCommand.Parameters.Add("@SourceFileDates", …
Run Code Online (Sandbox Code Playgroud)

c# t-sql parameters stored-procedures sql-server-2008

3
推荐指数
1
解决办法
2592
查看次数

使用UDF拆分值对和创建表

我一直在尝试编写一个Table-Valued函数,它将值对作为参数并返回一个包含两列的表.

以下是我正在尝试的功能签名.

FUNCTION [dbo].[ValuePairParser]( @DelimitedValuePairs VARCHAR(MAX),
                                  @Delimiter CHAR(1), 
                                  @ValuePairDelimiter CHAR(1) ) 
  RETURNS @ValuePairTable
  TABLE ( Id INT, Code INT ) 
Run Code Online (Sandbox Code Playgroud)

我想调用下面的方法

@ValuePairs VARCHAR(MAX) = '1:1, 1:2, 1:4, 2:3, 1000:230, 130:120,'

ValuePairParser (@ValuePairs, ',', ':')
Run Code Online (Sandbox Code Playgroud)

你能看到任何好的方法来拆分ValuePairs sting并创建一个包含两列的表吗?

sql t-sql sql-server sql-server-2005 user-defined-functions

2
推荐指数
1
解决办法
1791
查看次数