在用户输入上显示记录存储过程 [重复]

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 是毫无意义的。

【讨论】:

以上是关于在用户输入上显示记录存储过程 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

尝试创建一个在 pl/sql 中接受用户输入的过程 [重复]

存储对象数组,然后检查上一个和下一个项目

此页面显示用户在文本框部分输入的值[重复]

用户输入时,代码不会存储两个零,而是存储一个 0 [重复]

为自动完成/预先输入字段在本地存储数据

刷新时如何防止重复条目?