2012-06-06 3 views
0

저장 프로 시저를 쓰려고합니다. 하지만이 이상한 오류를 받고 ... 아무도 나를 도울 수 있다면 좋을 텐데 ...sql 오류 : 문자열에서 날짜 및/또는 시간을 변환 할 때 변환하지 못했습니다.

이것은 내 저장된 proc입니다.

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' 

오류 : 문자열에서 날짜 및/또는 시간을 변환 할 때 변환이 실패했습니다.

답변

2

테이블에서 선언 된 것과 동일한 순서로 선택문에 열을 지정하지 않습니다.

따라서 삽입 항목에 columns 절을 추가하십시오.

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 
... 
+0

super..duper ... thanks m8. 내 어리석은 실수 – kandroid

+1

@kandroid - 왜 중간 테이블 변수로 귀찮게합니까? 게시 한 코드에서 필요하지 않은 것 같고 추가 오버 헤드가 추가됩니다 ('SELECT'에 병렬 계획을 사용할 수 없음) –

+0

글쎄, Entity Framework에서 'function input'을 수행하면 칼럼이 없다고 말합니다. 그게 왜 내가 중간 테이블을 써 보았는지. 그리고 효과가있었습니다. – kandroid

관련 문제