从存储过程中有效返回值

时间:2011-12-07 22:22:08

标签: sql-server stored-procedures

我有查询返回单值(即)计数。我通过以下方式使用存储过程并使用带有数据集的执行读取器来获取单个值

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 任何人都可以建议我

2 个答案:

答案 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()