2016-02-11 65 views
1

我打电话为什么我得到“无效的对象名称FinishedMappings”。“这里?

public bool CheckIfFinished (Guid pid, int sid) 
    { 
     // pid: guid corresponding to partner 
     // sid: survey id 
     bool finished = false; 
     using (SqlCommand cmd = new SqlCommand("CheckIfFinished", this._Conn)) 
     { 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.AddWithValue("@pid", pid); 
      cmd.Parameters.AddWithValue("@sid", sid); 
      this._Conn.Open(); 
      using (SqlDataReader dataReader = cmd.ExecuteReader()) 
      { 
       while (dataReader.Read()) 
       { 
        finished = dataReader.GetByte(0) == 1 ? true : false; 
       } 

      } 
      this._Conn.Close(); 
     } 
     return finished; 
    } 

它调用存储过程的

GO 
-- Create sproc for returning whether a partner has marked their survey as finished 
CREATE PROCEDURE CheckIfFinished 
    @pid UNIQUEIDENTIFIER, 
    @sid INT 
AS 
    BEGIN 
    SELECT 1 FROM FinishedMappings WHERE [email protected] AND [email protected] 
    END 

它使用它确实存在,因为它与

CREATE TABLE FinishedMappings ( 
    partner_id UNIQUEIDENTIFIER, 
    survey_id INT, 
    PRIMARY KEY (partner_id,survey_id), 
    FOREIGN KEY (partner_id) REFERENCES Partners(id), 
    FOREIGN KEY (survey_id) REFERENCES Surveys(id) 
); 

正确的存储过程的上述定义的表FinishedMappings。为什么我会收到错误?

+0

尝试使用完全限定的名称(即与模式名称) – DimaSUN

+0

命令类型= StoredProcedure和你应该使用输出参数 – DimaSUN

+0

@DimaSUN这将是奇怪的考虑我已经在所有其他存储过程中使用了表1部分表名而没有问题 –

回答

0

如果表是使用与正在执行sp的用户不同的用户创建的,则可能需要完全限定的名称。我会首先在dimasun在他的第一个回复中提出的建议中进行检查。

另外检查是否可以直接在SQL管理工作室中执行sp。如果这不起作用,那么你可以专注于代码sp

相关问题