【问题标题】:Stored procedure can't select table存储过程无法选择表
【发布时间】:2014-04-11 17:58:34
【问题描述】:

有人可以告诉我我哪里出错了:

执行此操作时出错:

CREATE PROCEDURE dbo.EnrollStudent ( @CourseID  AS INTEGER,
                                     @StudentID AS VARCHAR(20), 
                                     @Status AS VARCHAR(50) OUTPUT ) AS
BEGIN
   DECLARE @StutusID INTEGER

   IF @StutusID = 1
   BEGIN  
       SET @Status = 'The Student is already Enrolled'
   END;

   ELSE IF @StutusID = 2
   BEGIN 
       SET @Status = 'Cannot enroll until faculty is selected' 
   END

   ELSE IF @StutusID = 3
   BEGIN 
       SET @Status = 'Student Enrolled' 
   END

   IF (dbo.CourseEnrollment.CourseId = @CourseID AND 
       dbo.CourseEnrollment.StudentId LIKE @StudentID)
   BEGIN
      SET @StutusID = 1
   END
END;

我的错误是

消息 4104,级别 16,状态 1,过程 EnrollStudent,第 23 行
无法绑定多部分标识符“dbo.CourseEnrollment.CourseId”。
消息 4104,级别 16,状态 1,程序 EnrollStudent,第 23 行
无法绑定多部分标识符“dbo.CourseEnrollment.StudentId”​

如何从CourseEnrollment 表中进行选择?我不能那样做。

【问题讨论】:

    标签: sql sql-server sql-server-2008 stored-procedures


    【解决方案1】:

    你不能只使用表格的列而不使用表格:

    IF EXISTS (SELECT 1 FROM dbo.CourseEnrollment WHERE CourseId=@CourseID 
               AND StudentId LIKE '%' + @StudentID + '%')
    BEGIN
    SET @StutusID=1
    END
    

    【讨论】:

      【解决方案2】:

      Yout Code 有点不清楚。 在声明而不设置变量后检查 @stutusID 是否为 1。

      之后你可以读取一个表的一些数据。

      我认为您正在尝试检查表中是否已经存在学生 ID。 你应该这样做:

      CREATE PROCEDURE dbo.EnrollStudent ( @CourseID  AS INTEGER,
                                       @StudentID AS VARCHAR(20), 
                                       @Status AS VARCHAR(50) OUTPUT ) AS
      BEGIN
         DECLARE @StutusID INTEGER
      
         SELECT COUNT(*) INTO @StutisID FROM dbo.CourseEnrollment WHERE dbo.CourseEnrollment.CourseId = @CourseID AND 
             dbo.CourseEnrollment.StudentId LIKE @StudentID
      
         IF @StutusID = 1
         BEGIN  
             SET @Status = 'The Student is already Enrolled'
         END;
      
             ELSE IF @StutusID = 2
         BEGIN 
             SET @Status = 'Cannot enroll until faculty is selected' 
         END
      
         ELSE IF @StutusID = 3
         BEGIN 
             SET @Status = 'Student Enrolled' 
         END
      END;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-01
        • 1970-01-01
        • 2016-10-05
        • 2010-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多