0

我正在尝试编写一个存储过程。但是遇到这个奇怪的错误..如果有人可以帮助我会很好...

这是我的存储过程。

ALTER PROCEDURE [dbo].[Usp_search] (@keyword NVARCHAR(500))
AS
  BEGIN
      DECLARE @tab TABLE (
        id          UNIQUEIDENTIFIER,
        Title       NVARCHAR(250),
        Description NVARCHAR(500),
        FilePath    NVARCHAR(500),
        UploadDate  DATETIME,
        FileName    NVARCHAR(250),
        CourseName  NVARCHAR(150),
        FullName    NVARCHAR(250),
        School      NVARCHAR(250))

      INSERT INTO @tab
      SELECT un.Id,
             un.Title,
             un.Description,
             un.FileName,
             un.FilePath,
             uc.CourseName,
             up.Fullname,
             up.School,
             un.UploadDate
      FROM   UserNotes un
             INNER JOIN UserCourse uc
               ON un.CourseId = uc.Id
             INNER JOIN UserProfile up
               ON up.Id = un.UserId
      WHERE  FREETEXT(( un.Title, un.Description, un.Tag ), @keyword)

      SELECT *
      FROM   @tab

      RETURN
  END 

--exec usp_search 'mvc'

这是错误:从字符串转换日期和/或时间时转换失败。

4

1 回答 1

2

您在 select 语句中指定列的顺序与它们在表中声明的顺序不同。

所以要么在你的插入中添加一个列子句 - 例如

INSERT INTO @tab (ID, Title, Description ...)

或者更改您选择的列的顺序。在我看来,你想要

SELECT un.Id,
       un.Title,
       un.Description,
       un.FilePath,
       un.UploadDate,
       un.FileName,
       uc.CourseName,
       up.Fullname,
       up.School
...
于 2012-06-06T22:42:42.800 回答