Sql 将select转换为存储过程最佳方法
我使用此SQL获取每个类型组的计数Sql 将select转换为存储过程最佳方法,sql,firebird,Sql,Firebird,我使用此SQL获取每个类型组的计数 select mytype, count(mytype) from types1 group by 1 结果是每种类型有5条记录。我需要将其转换为存储过程;我应该使用For…Select写入上述SQL,还是应该使用Select…Where…将单个值返回到每个类型中5次 我将使用返回计数更新主表,并且类型可能会在将来增加。这取决于您希望从过程中得到什么: 如果希望五行的输出与select相同,请将用于select。对于每种类型和关联的计数,您将得到
select
mytype, count(mytype)
from types1
group by 1
结果是每种类型有5条记录。我需要将其转换为存储过程;我应该使用For…Select
写入上述SQL,还是应该使用Select…Where…将单个值返回到每个类型中
5次
我将使用返回计数更新主表,并且类型可能会在将来增加。这取决于您希望从过程中得到什么:
- 如果希望五行的输出与select相同,请将
。对于每种类型和关联的计数,您将得到一行。这可能是“标准”方法用于select
- 然而,如果您想要五个输出变量,每种类型的每个计数一个,您可以使用五个查询,形式为
。但是要意识到这将是五个查询,最好对SELECT查询执行一个选择count(1)FROM types1,其中mytype='type1'进入:type1
,并在过程中循环返回的行。还要注意,如果在某个时候添加第六种类型,则必须更改此过程以添加其他类型
- 如果要查询单个类型,还可以执行以下操作,这将在输入参数中返回包含该类型单个计数的单行:
CREATE PROCEDURE GetTypeCount( TypeName VARCHAR(256) ) RETURNS ( TypeCount INTEGER ) AS BEGIN SELECT COUNT(1) FROM types1 WHERE mytype = :TypeName INTO :TypeCount; SUSPEND END