在用户输入上显示记录存储过程 [重复]
Posted
技术标签:
【中文标题】在用户输入上显示记录存储过程 [重复]【英文标题】:Show records on userInput store PROCEDURE [duplicate] 【发布时间】:2018-12-07 13:30:37 【问题描述】:我想根据用户输入显示记录。
CREATE PROCEDURE [dbo].[ShowRecords]
@recordsToShow int
AS
BEGIN
select top @recordsToShow * from usermaster
END
【问题讨论】:
您使用的是 mysql 还是 MS SQL Server? 酷,你有什么问题? 声明@Percentage AS int = 5 SELECT TOP (@Percentage) * FROM tablename 【参考方案1】:您应该在存储过程中传递参数[这是用户输入]。检查以下sn-ps:
CREATE PROCEDURE [dbo].[ShowRecords](@parameter int/tinyint)
AS
BEGIN
select top (@parameter) * from [Table_name];
END
--参数类型应该是数字;
【讨论】:
【参考方案2】:在 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 是毫无意义的。
【讨论】:
以上是关于在用户输入上显示记录存储过程 [重复]的主要内容,如果未能解决你的问题,请参考以下文章