Mysql 显示userInput存储过程上的记录

Mysql 显示userInput存储过程上的记录,mysql,sql,sql-server,Mysql,Sql,Sql Server,我想根据用户输入显示记录 CREATE PROCEDURE [dbo].[ShowRecords] @recordsToShow int AS BEGIN select top @recordsToShow * from usermaster END 您应该在存储过程内部传递参数[这是用户输入]。检查以下代码段: CREATE PROCEDURE [dbo].[ShowRecords](@parameter int/tinyint) AS BE

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

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

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

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

-参数类型应为数值型

在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)

顺便说一句,没有order by的top是毫无意义的。

您使用的是MySQL还是MS SQL Server?酷,有什么问题吗?将@Percentage声明为int=5从tablename中选择top@Percentage*