2011-10-04 48 views
1

我想使這個ASP/SQL語句工作,但我不斷得到ORA-01036:非法字符錯誤。所以,我假設我缺少SQL語法的轉義字符或者這些行中的某個字符。非法字符錯誤爲ASP.NET/Oracle

我將這段代碼從我的C#代碼轉換而來,並將其編碼爲ASP。

<asp:SqlDataSource ID="EmployeeSqlDataSource" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
     ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
     OnSelecting="EmployeeSqlDataSource_Selecting" 
     SelectCommand="SELECT a.vax_user_id, b.person_id, b.email_id, b.last_nm, b.first_nm, b.parent_org_unit_cd, a.acceptance_date, a.emp_status_cd 
     FROM inet_own.fitness_rwl a, inet_own.employee_info_ldap_snap b 
     WHERE a.vax_user_id = b.vax_user_id 
     AND a.emp_status_cd like 'A' 
     AND UPPER(b.last_nm) LIKE UPPER('%:lastName%') 
     ORDER BY b.parent_org_unit_cd, a.acceptance_date 
     "> 

    <SelectParameters> 
     <asp:ControlParameter ControlID="radTbLastName" Name="lastName" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

回答

1

:lastName意思是一個綁定變量?我不知道ASP,但perl或java或C(oci)都不會那樣。這些語言不允許字符串(引號)內綁定變量,相反,你必須把它寫成

AND UPPER(b.last_nm) LIKE UPPER('%' || :lastName || '%') 

可惜我看不出這可能會導致無效字符錯誤,但也許它的混亂ASP等等實際上被傳遞給oracle的東西被搞砸了。只是一個猜測。

+0

它應該是。 SelectParameters鏈接到一個Telerik文本框,該文本框捕獲用戶的文本/名稱,然後將其用作一個變量,以將SQL語句內的lastName替換爲文本框的文本值。 – ReiRei

+0

驚訝於您的建議確實有效。我有C#代碼背後,它不喜歡之前的%,所以我不得不做一個字符串變量添加%與用戶輸入,然後傳遞該變量。 – ReiRei