【问题标题】:Using the count as a parameter in stored procedure?在存储过程中使用计数作为参数?
【发布时间】:2015-03-06 17:34:21
【问题描述】:

我正在尝试创建一个存储过程,该过程将根据某个数字搜索重复的行(即,如果我想查看 2 个相同行的实例,请使用“有 count(*)>2)

 select invoice.first_name, invoice.last_name, invoice.date_ordered,
 sum(total_cost) AS Total_Spent
 from invoice
 group by invoice.last_name
 having count(*)>2;

我想要创建的是人们在调用过程时指定计数的选项,这样他们就不必进入过程、编辑查询、保存等。

有没有办法把它变成参数?

【问题讨论】:

  • 你想要这个子句having count(*) > 2参数化吗?

标签: sql stored-procedures count duplicates


【解决方案1】:

试试这样:

set nocount on;
create proc dbo.test
   @nas int
as 
begin
select invoice.first_name, invoice.last_name, invoice.date_ordered,
 sum(total_cost) AS Total_Spent
 from invoice
 group by invoice.last_name
 having count(*)>@nas;
end

exec dbo.test @nas=2

【讨论】:

    【解决方案2】:

    首先,你的意思是:

    该人指定计数的选项

    如果您的意思是要指定返回的相同记录的数量,那么您可以:

    ALTER PROCEDURE YourProcedureName (@Count INT) AS
    BEGIN
     select invoice.first_name, invoice.last_name, invoice.date_ordered,
     sum(total_cost) AS Total_Spent
     from invoice
     group by invoice.last_name
     having count(*)>@Count;
    END
    

    这将创建一个输入参数,以便用户在运行该过程时可以指定相同行数将大于@Count 参数。

    如果您希望用户能够依赖特定的列,那就有点棘手了。

    【讨论】:

      猜你喜欢
      • 2016-03-11
      • 1970-01-01
      • 2014-01-27
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多