2014-04-24 147 views
0

我在Oracle中運行此函數時遇到問題。我似乎無法弄清楚發生了什麼事。我不斷收到「SQL命令未正確結束18行」。我認爲這與我的即時SQL有關,但我不完全肯定。有什麼想法嗎?即時SQL - 命令未正確結束

create or replace 
FUNCTION COMPARE_USER(
indexNumber IN varchar, 
firstName IN varchar, 
lastName IN varchar, 
email IN varchar, 
department IN varchar, 
userLocation IN varchar, 
userType IN varchar, 
active IN varchar 
) 
RETURN CHAR 
IS 
    tableName varchar(50) := 'TEST_USER'; 
    boolCheck char; 
    rowCount int; 

BEGIN 
    EXECUTE IMMEDIATE 
    'SELECT COUNT(*) FROM ' || tableName || 
    ' WHERE INDEX_NUMBER = ' || indexNumber || 
    ' AND FIRST_NAME = ' || firstName || 
    ' AND LAST_NAME = ' || lastName || 
    ' AND EMAIL = ' || email || 
    ' AND DEPARTMENT = ' || department || 
    ' AND USER_LOCATION = ' || userLocation || 
    ' AND USER_TYPE = ' || userType || 
    ' AND ACTIVE = ' || active 
    INTO rowCount; 

    IF rowCount = 0 Then 
    boolCheck := 'N'; 
    Else 
    boolCheck := 'Y'; 
    End If; 
RETURN boolCheck; 
END COMPARE_USER; 

回答

0

是,嘗試重新編寫EXECUTE IMMEDIATE語句,如下所示:

EXECUTE IMMEDIATE 
    'SELECT COUNT(*) FROM ' || tableName || 
    ' INTO rowCount' 
    ' WHERE INDEX_NUMBER = ' || indexNumber || 
    ' AND FIRST_NAME = ' || firstName || 
    ' AND LAST_NAME = ' || lastName || 
    ' AND EMAIL = ' || email || 
    ' AND DEPARTMENT = ' || department || 
    ' AND USER_LOCATION = ' || userLocation || 
    ' AND USER_TYPE = ' || userType || 
    ' AND ACTIVE = ' || active 
相關問題