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*