两个表上的SQL Server存储过程和变量条件

时间:2013-11-12 16:03:32

标签: sql sql-server tsql stored-procedures

在SQL Server中使用存储过程,我试图将值放入几个条件变量中。我怀疑问题是这些变量是计数/总和,就像两个不同的表一样。

例如:

CREATE PROC [dbo].[GetTrends]
AS
DECLARE @N_NE INT
DECLARE @BB_NE
DECLARE @date DATETIME

    BEGIN
    SELECT @date = GETDATE();
        SELECT @N_NE = SUM(CASE WHEN a.STATUS = 'Active' AND b.REGION = 'NE' THEN 1 ELSE 0 END) + 
        SUM(CASE WHEN a.STATUS = 'Ready' AND b.REGION = 'NE' THEN 1 ELSE 0 END) 
        FROM dbo.FOO as a INNER JOIN dbo.BAR as b on a.ID = b.ID;
        SELECT @BB_NE = SELECT COUNT(*) FROM dbo.ANOTHERTABLE
        INSERT INTO dbo.Trends (Date) VALUES (@date);
        UPDATE dbo.Trends SET N_NE = (@N_NE + @BB_NE) WHERE DATE = @date;
    END;

单个SELECT查询可以自行运行,但当我尝试CREATE PROC时,我会遇到以下形式的几个错误:

  

Msg 4104,Level 16,State 1,Procedure My Proc,Line 51
  无法绑定多部分标识符“a.STATUS”   消息4104,级别16,状态1,程序My Proc,Line 51
  无法绑定多部分标识符“b.REGION”。

等等......

有没有办法绕过这个/我是否犯了一个可怕的错误?谢天谢地。

1 个答案:

答案 0 :(得分:2)

这是不可能的。
1.确保您的两个连接都在同一服务器/数据库中 2.停止所有可以DDL你的桌子的服务 3.尝试直接SQL和通过SP包含相同(复制/粘贴)查询。他们将返回相同的结果。