게시판 본문 COM / COM+ by VB 6.0 - Read Only
sp_executsql 질문요. 안풀리내요 ^^; |
---|
작성자: 장윤태
작성일시: 2006-05-08 22:35,
조회수: 692
|
Case 부분에서 'AND 키워드 근처의 구문이 잘못되었습니다.' 라는 에러 메시지가 납니다. 왜 일까요? 동적 sql의 촉복과 저주에서 된다고 했는데;; 왜 안될까요?
여러모로 해보았는데 안되내요;; ★★아님 다른 방법이라도 잇으면 알려주세요. 왠만하면 동적은 안쓰고 페이지 해볼려고 하는데 다른 방법은 있을까요??? 조건 대로 다 하드 코딩하는건 말고요. CREATE PROCEDURE [knowledgeJump_list_usp] @Contents_Code int , @Page_Size int , @Now_Page int , @Field varchar(20) , @Str varchar(30) , @Tot_Rec int OUTPUT , @Tot_Page int OUTPUT AS BEGIN SET NOCOUNT ON --BEGIN TRAN Declare @SQL NVarChar(1000) Set @SQL = 'SELECT Top '+ Convert(NvarChar(5),@Page_Size) +' k_j.K_Jump_Num, k_j.K_Jump_Sepa, k_j.K_Jump_CateCode, k_j.K_Jump_CNum, k_j.K_Jump_QNum, k_j.K_Jump_Title, k_j.K_Jump_WriterID, k_j.K_Jump_WriteDate, k_j.K_Jump_Contents, k_j.K_Jump_ViewCNT, k_c.K_Category_code, k_c.K_Category_Name, k_c.K_ParentCategory, k_c_self.K_Category_Name AS smallCate_Name FROM dbo.Know_Jump_TB k_j INNER JOIN dbo.Know_Category k_c ON k_j.K_Jump_CateCode = k_c.K_Category_code INNER JOIN dbo.Know_Category k_c_self ON k_c.K_ParentCategory = k_c_self.K_Category_code WHERE (k_j.K_Jump_CNum = '+ Convert(NvarChar(10),@Contents_Code) +' ) AND (k_j.K_Jump_Sepa = ''1'') AND k_j.K_Jump_Num NOT IN (SELECT TOP '+ Convert(NvarChar(10) , ( @Now_Page - 1 ) * @Page_Size ) +' k_j.K_Jump_Num FROM Know_Jump_TB k_j ORDER BY k_j.K_Jump_Num DESC ) ' If @Str <> '' BEGIN Set @SQL = @SQL + ' AND '+ Convert(nvarchar(20),@Field) +' LIKE ''%'+ Convert(nvarchar(50),@Str) +'%'' ' END Set @SQL = @SQL + ' ORDER BY k_j.K_Jump_Num DESC ' -- EXEC SP_ExecuteSQL @SQL ,N'@tmp_Page_Size int , @tmp_Tot_Rec int OUTPUT , @tmp_Tot_Page int OUTPUT' , @tmp_Page_Size = @Page_Size , @tmp_Tot_Rec = @Tot_Rec OUTPUT , @tmp_Tot_Page = @Tot_Page OUTPUT EXEC SP_ExecuteSQL @SQL -- Declare @SQL NVarChar(500) -- Set @SQL = 'SELECT @tmp_Tot_Rec = Count(*) , @tmp_Tot_Page = Ceiling ( Count(*) / @tmp_Page_Size ) FROM Know_Jump_TB' -- EXEC SP_ExecuteSQL @SQL ,N'@tmp_Page_Size int , @tmp_Tot_Rec int OUTPUT , @tmp_Tot_Page int OUTPUT' , @tmp_Page_Size = @Page_Size , @tmp_Tot_Rec = @Tot_Rec OUTPUT , @tmp_Tot_Page = @Tot_Page OUTPUT ★★ 문제의 부분 ★★ Select @Tot_Rec = Count(*) FROM Know_Jump_TB k_j WHERE (k_j.K_Jump_CNum = @Contents_Code ) AND (k_j.K_Jump_Sepa = 1) If @Str <> '' BEGIN AND ( CASE @Field WHEN 'title' THEN k_j.K_Jump_Title WHEN 'contents' THEN k_j.K_Jump_content WHEN 'writer' THEN k_j.K_Jump_writer END LIKE '%@Str%' ) END Set @Tot_Page = Ceiling( Convert(FLOAT, @Tot_Rec )/@Page_Size) -- IF (@@ERROR<> 0) BEGIN -- ROLLBACK TRAN -- END -- ELSE BEGIN -- COMMIT TRAN -- END SET NOCOUNT OFF END GO |
IP 주소: 220.64.75.78
|
전체 276 건의 게시물,
12 페이지로 구성된
COM / COM+ by VB 6.0 게시판의
4 페이지입니다.
게시물 | ||||
---|---|---|---|---|
204 | 2006-10-10 | 5,999 | ||
203 | 2006-10-11 | 2,886 | ||
202 |
FTP 클라이언트 프로그램 [2] |
2006-07-12 | 2,955 | |
201 |
액티브X 설치 [1] |
정보문 |
2006-07-11 | 675 |
200 |
장윤태 |
2006-07-03 | 656 | |
199 | 2006-07-04 | 2,994 | ||
198 |
장윤태 |
2006-06-23 | 546 | |
197 | 2006-06-24 | 2,944 | ||
196 |
COM초보자 |
2006-06-23 | 634 | |
195 | 2006-06-24 | 3,091 | ||
194 | 2006-06-20 | 3,234 | ||
193 | 2006-05-27 | 6,743 | ||
192 | 2006-05-27 | 2,888 | ||
191 | 2006-05-28 | 3,089 | ||
190 | 2006-05-29 | 3,224 | ||
장윤태 |
2006-05-08 | 692 | ||
188 | 2006-05-09 | 2,993 | ||
187 | 2006-05-03 | 2,769 | ||
186 | 2006-05-04 | 3,038 | ||
185 | 2006-05-03 | 2,894 | ||
184 | 2006-05-03 | 2,890 | ||
183 | 2006-05-03 | 2,798 | ||
182 | 2006-04-27 | 2,926 | ||
181 | 2006-04-28 | 2,861 | ||
180 | 2006-04-26 | 2,944 |