2012-06-28 9 views
4

삽입 쿼리를 실행하려고하는데 아래 오류가 나타납니다. 삽입 문에 값을 전달하려면 어떻게해야합니까? 값은 배열에서 나오고 [cNotes] 열 유형은 varchar NULL입니다.INSERT 쿼리 오류 : 데이터 유형 varchar에서 varbinary 로의 암시 적 변환이 허용되지 않습니다. CONVERT 함수를 사용하여이 쿼리를 실행합니다.

미리 감사드립니다.

오류 :

 Error Executing Database Query. 
     [Macromedia][SQLServer JDBC Driver][SQLServer]Implicit conversion from data type varchar to varbinary is not allowed. Use the CONVERT function to run this query. 

     The error occurred in C:\Inetpub\wwwroot\Components\Assessment.cfc: line 510 
     Called from C:\Inetpub\wwwroot\Components\Assessment.cfc: line 440 

      508 :      ,NULL 
      509 :     </cfif> 
      510 :     ,'#arguments.notes#') 
      511 :  </cfquery> 
      512 :  </cffunction> 



      -------------------------------------------------------------------------------- 

      SQL INSERT INTO AssessmentToolDetail(iAssessmentToolMaster_ID ,iServiceList_ID ,cRowStartUser_ID ,Service_text ,cNotes) Values(251069 ,3592 ,NULL ,'y ' ,'') 
      DATASOURCE TIPS4 
      VENDORERRORCODE 257 
      SQLSTATE HY000 ' 

CFC 기능 :

<cffunction name="AddService" access="public" returntype="void" output="false"> 
    <cfargument name="ServiceList" type="Components.ServiceList" required="true"> 
    <cfargument name="notes" type="string" required="false" default=""> 
    <cfargument name="serviceText" type="string" required="false" default="">  

    <cfquery name="AddServiceListQuery" datasource="#variables.dsn#"> 
     INSERT INTO AssessmentToolDetail (
       iAssessmentToolMaster_ID 
       , iServiceList_ID 
       , cRowStartUser_ID 
       , Service_text 
       , cNotes) 
     VALUES (
       #variables.id# 
       ,#ServiceList.GetId()#    
       <cfif variables.rowStartUserId neq ""> 
        , '#variables.rowStartUserId#' 
       <cfelse> 
        , NULL 
       </cfif> 
       <cfif ListFirst(Arguments.serviceText,'_') EQ ServiceList.GetId() > 
        , '#Left(ListLast(Arguments.serviceText,'_'),1)# ' 
       <cfelse> 
        , NULL 
       </cfif> 
       , '#arguments.notes#' 
      ) 
    </cfquery> 
</cffunction> 
+2

제쳐두고,'cfqueryparam'을 사용하여 SQL injection에 대한 쿼리를 보호해야합니다 (성능상의 이유로). – Leigh

답변

4

오류, 당신은 바이너리 저장 형식의 컬럼에 문자열을 삽입하기 위해 노력하고 있다는 말을하고, 그것은 암묵적으로 변환을 할 수 없습니다. AssessmentToolDetail 테이블의 cNotes 열이 varchar(n) 또는 nvarchar(n)하지 varbinary(n)의 데이터 유형을 가지고

확인합니다.

+0

그 [cNotes] varchar NULL, – TGR

+0

오류 메시지가 실행하려고하는 SQL을 뱉어냅니다 ... 저에게 잘 들리지만, SQL Server Management Studio에서 SQL을 실행하면 어떻게됩니까? –

+0

Adam - 같은 오류 : 메시지 257, 수준 16, 상태 3, 줄 1 데이터 형식 varchar에서 varbinary 로의 암시 적 변환이 허용되지 않습니다. CONVERT 함수를 사용하여이 쿼리를 실행합니다. – TGR

관련 문제