我有查询返回单值(即)计数。我通过以下方式使用存储过程并使用带有数据集的执行读取器来获取单个值
CREATE PROCEDURE GetCnt
@EmpNo char(4)
AS
BEGIN
SET NOCOUNT ON;
Declare @Cnt int
SELECT @Cnt = count(*)
FROM employees
WHERE EMPLNO = @EmpNo
AND test = 'p'
BEGIN
SELECT @Cnt
END
END
是这种有效的方式 或者我是否需要使用execute.scalar()并直接从查询返回值,而不是分配给@cnt 任何人都可以建议我
答案 0 :(得分:1)
所有ExecuteScalar都是从第一条记录中获取第一个字段。
你不能直接SELECT
点数吗?
BEGIN
SET NOCOUNT ON
SELECT Count(*) FROM employees WHERE EMPLNO = @EmpNo AND test='p'
END
答案 1 :(得分:0)
您无需创建变量。您只需要以下内容:
CREATE PROCEDURE GetCnt
@EmpNo char(4)
AS
BEGIN
SET NOCOUNT ON;
SELECT count(1)
FROM employees
WHERE EMPLNO = @EmpNo
AND test = 'p'
END
由于这只是从存储过程返回的一个值,因此您可能希望使用ExecuteScalar()