2011-12-27 3 views
1

다음과 같은 오류가 반환됩니다. "키워드 'VIEW'근처에 구문이 잘못되었습니다." 나는이 인스턴스의 참조를 온라인에서 찾아 보려고 노력했다. 만약 내가 해결책을 간과하거나 누군가가 제안을하면 크게 감사하겠습니다.보기를 만드는 동안 cfquery에서 이상한 오류가 발생했습니다.

검색어 :

<cfquery datasource="#mydatasource#"> 
    CREATE VIEW #arguments.bulkRow.request_by#_uploader_features_view 
    (
     feature_products_id 
     , feature_text 
     , feature_priority 
    ) 
    AS 
    SELECT 
     a1.tbl_products__products_id AS feature_products_id, 
     a1.tbl_productfeature__feature_text__1 AS feature_text, 
     1 AS feature_priority 
    FROM bulk_product_upload a1 
    WHERE processed = 0 
     AND request_by = <cfqueryparam value="#arguments.bulkRow.request_by#" cfsqltype="cf_sql_varchar"> 
     AND LEN(a1.tbl_productfeature__feature_text__1) > 1 

    UNION 

    SELECT 
     a1.tbl_products__products_id AS feature_products_id, 
     a1.tbl_productfeature__feature_text__2 AS feature_text, 
     2 AS feature_priority 
    FROM bulk_product_upload a1 
    WHERE processed = 0 
     AND request_by = <cfqueryparam value="#arguments.bulkRow.request_by#" cfsqltype="cf_sql_varchar"> 
     AND LEN(a1.tbl_productfeature__feature_text__2) > 1 

    ... 

    UNION 

    SELECT 
     a1.tbl_products__products_id AS feature_products_id, 
     a1.tbl_productfeature__feature_text__20 AS feature_text, 
     2 AS feature_priority 
    FROM bulk_product_upload a1 
    WHERE processed = 0 
     AND request_by = <cfqueryparam value="#arguments.bulkRow.request_by#" cfsqltype="cf_sql_varchar"> 
     AND LEN(a1.tbl_productfeature__feature_text__20) > 1 
</cfquery> 

이 쿼리의 약자입니다하지만 당신이 시작할 수 및 기본 레이아웃을 표시해야합니다. 사전에

감사합니다,

JP

+0

'arguments.bulkRow.request_by' 변수의 값은 무엇입니까? –

+0

cfquery를 호출하기 직전에 cfdump는 # arguments.bulkRow.request_by # 변수를 사용합니다. 나는 그것이 당신이보기의 동적 인 이름을 형성하는데 도움이 될 문자열이라고 기대하고있다. 그러나 이것은 SQL 에러를 일으키는 또 다른 것이다. (즉 CREATE VIEW와 같은 어떤 것으로 끝난다. it_uploader_features_view의 공백) –

+0

@JustinScott - 사용자 ID입니다. 예를 들어 "i_jimp"라고 말할 수 있습니다. – JimP

답변

7

난 내 자신의 SQL 서버에 대해 몇 가지 테스트를 실행하고는 뷰를 만들 때 매개 변수화 된 쿼리 문제가 발생할 것으로 보인다. CFQUERYPARAM 태그를 제거하면 문제가 해결됩니다. 표준 select 문과 함께 CFQUERYPARAM을 사용하는 것이 가장 좋지만,이 경우 뷰에 액세스 할 때마다 실행되는 SQL을 전달하므로 매개 변수화를 뷰로 전달할 수 없습니다.

다음은 동일한 개념을 사용하는 두 가지 예제이지만 내 데이터베이스 중 하나의 테이블입니다. 다음은 잘 작동

<cfset id="x" /> 
<cfquery> 
    create view #id#_view as 
    select * from AdminUser 
    where admID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#id#" /> 
</cfquery> 

:

는 다음은 Incorrect syntax near the keyword 'view' 오류가 발생

<cfset id="y" /> 
<cfquery> 
    create view #id#_view as 
    select * from AdminUser 
    where admID = '#id#' 
</cfquery> 

사람이 상세하게 편집 주시기 설명하는 SQL 서버 참조를 찾을 수있는 경우

이 대답은 링크가 있습니다.

또한 ID 값에 따라보기 이름을 대괄호로 묶는 것이 좋습니다. ID가 숫자로 시작되면 명령문은있는 그대로 실패하지만 대괄호로 묶은 명령문에 넣으면 해당 상황이 처리됩니다 (보기를 조회 할 때 대괄호 표기법을 사용해야합니다). 예 : create view [#id#_view]

+0

감사합니다 저스틴! 그것은 매력처럼 작용했습니다. – JimP

관련 문제