按参数排序

Luc*_*oli 11 sql-server stored-procedures sql-order-by

嗨,我有一个商店程序,我在那里做一个选择查询.我希望通过外部参数来订购.

我发布了一个最小的例子:

CREATE PROCEDURE [dbo].[up_missioni_get_data]
@order VarChar(100)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT  * from missioni ORDER BY ...
END
Run Code Online (Sandbox Code Playgroud)

我可以按顺序写什么呢?

谢谢

Adr*_*der 8

您有2个选项,可以使用CASE语句,也可以使用动态sql

这将是CASE声明的一个例子

DECLARE @Table TABLE(
        Col1 VARCHAR(10),
        Col2 VARCHAR(10)
)

DECLARE @OrderBy VARCHAR(100)

SET @OrderBy = 'Col1'

SELECT  *
FROM    @Table
ORDER BY 
        CASE
            WHEN @OrderBy = 'Col1' THEN Col1
            WHEN @OrderBy = 'Col2' THEN Col2
            ELSE Col1
        END
Run Code Online (Sandbox Code Playgroud)

这将是动态sql的例子

CREATE TABLE #Table (
        Col1 VARCHAR(10),
        Col2 VARCHAR(10)
)

DECLARE @OrderBy VARCHAR(100)

SET @OrderBy = 'Col1'

DECLARE @SqlString NVARCHAR(MAX)

SELECT @SqlString = 'SELECT * FROM #Table ORDER BY ' + @OrderBy

EXEC(@Sqlstring)

DROP TABLE #Table
Run Code Online (Sandbox Code Playgroud)

  • +1第一个被保护或再次安全sql注入 (4认同)