在userInput存储上显示记录PROCEDURE

时间:2018-12-07 13:30:37

标签: mysql sql sql-server

我想根据用户输入显示记录。

 CREATE PROCEDURE [dbo].[ShowRecords]
        @recordsToShow int
    AS
    BEGIN
    select top @recordsToShow * from usermaster
    END

2 个答案:

答案 0 :(得分:0)

您应该在存储过程内部传递参数[这是用户输入的]。检查以下代码段:

CREATE PROCEDURE [dbo].[ShowRecords](@parameter int/tinyint)
AS
BEGIN
    select top (@parameter) * from [Table_name];
END

-参数类型应为数字;

答案 1 :(得分:0)

在sql server(实际上是任何sql)中,您需要构建一个sql语句并执行它。例如给出的

user_id     contact_type_id value                status dt
----------- --------------- -------------------- ------ -----------------------
1           2               bbb                  1      NULL
2           1               example@mail.com     NULL   NULL
4           1               example2@mail.com    NULL   NULL
5           2               123345               NULL   NULL
6           3               skypeLogin2          NULL   NULL

(5 row(s) affected) 

CREATE PROCEDURE P
        @recordsToShow int
    AS
    BEGIN
    declare @sqlstmt Nvarchar(1000)
    set @sqlstmt = concat('select top ',@recordstoshow,' * from users order by user_id desc')

    EXECUTE SP_EXECUTESQL  @SQLSTMT
    END
GO
EXEC P 3

user_id     contact_type_id value                status dt
----------- --------------- -------------------- ------ -----------------------
6           3               skypeLogin2          NULL   NULL
5           2               123345               NULL   NULL
4           1               example2@mail.com    NULL   NULL

(3 row(s) affected)

顺便说一句,无序的BTW上衣是毫无意义的。