복붙노트

[SQL] SQL 오류 : ORA-00933은 : SQL 명령이 제대로 종료되지

SQL

SQL 오류 : ORA-00933은 : SQL 명령이 제대로 종료되지

내가 조인 사용하여 오라클 SQL 개발자의 레코드를 업데이트하려합니다. 다음은 내 질의 -이다

UPDATE system_info set field_value = 'NewValue' 
FROM system_users users 
JOIN system_info info ON users.role_type = info.field_desc 
where users.user_name = 'uname'

내가 그것을 실행하려고 할 때 그러나, 나는 다음과 같은 오류 -있어

Error report: SQL Error: ORA-00933: SQL command not properly ended 
              00933. 00000 - "SQL command not properly ended"

나는 JOINS 제거 시도

UPDATE system_info info 
SET info.field_value = 'NewValue' 
FROM system_users users 
where users.user_name = 'uname' AND users.role_type = info.field_desc

하지만 여전히 같은 오류를 가지고 아무도 나에게 오류의 원인과 해결 방법을 알 수 있습니다

해결법

  1. ==============================

    1.오라클은 UPDATE 문에서 테이블을 조인 할 수 없습니다. 당신은 공동으로 관련 하위 선택하여 문을 다시 작성해야

    오라클은 UPDATE 문에서 테이블을 조인 할 수 없습니다. 당신은 공동으로 관련 하위 선택하여 문을 다시 작성해야

    이 같은:

    UPDATE system_info
    SET field_value = 'NewValue' 
    WHERE field_desc IN (SELECT role_type 
                         FROM system_users 
                         WHERE user_name = 'uname')
    

    UPDATE 문의 (유효) 구문에 대한 자세한 설명은 설명서를 읽어 보시기 바랍니다 :

    http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_10008.htm#i2067715

  2. ==============================

    2.세미콜론; 명령의 끝에 나 같은 오류가 발생했다.

    세미콜론; 명령의 끝에 나 같은 오류가 발생했다.

    cmd.CommandText = "INSERT INTO U_USERS_TABLE (USERNAME, PASSWORD, FIRSTNAME, LASTNAME) VALUES ("
                    + "'" + txtUsername.Text + "',"
                    + "'" + txtPassword.Text + "',"
                    + "'" + txtFirstname.Text + "',"
                    + "'" + txtLastname.Text + "');"; <== Semicolon in "" is the cause.
                                                          Removing it will be fine.
    

    희망이 도움이.

  3. ==============================

    3.귀하의 질의는 같아야합니다

    귀하의 질의는 같아야합니다

    UPDATE table_name
    SET column1=value, column2=value2,...
    WHERE some_column=some_value
    

    당신은 도움을 아래의 질문을 확인할 수 있습니다

  4. ==============================

    4.정확히이 질문의 실제 상황의 경우, 그러나이 예외는 다음 쿼리에 의해 재현 할 수 있습니다 :

    정확히이 질문의 실제 상황의 경우, 그러나이 예외는 다음 쿼리에 의해 재현 할 수 있습니다 :

    update users set dismissal_reason='he can't and don't want' where userid=123
    

    즉 작은 따옴표와 문자열을 위반하지 않습니다 수 없습니다. 경우 문자열에서 예를 들어, 하나의 내부 인용문이 오라클이 아닌 제대로 종료 오류 관련성 인용 문자열을 던진다 '고 싶지 않아',하지만 제대로 종료되지 두 SQL 명령의 경우에 발생합니다.

    요약 : 이중 따옴표에 대한 쿼리를 확인합니다.

  5. ==============================

    5.오라클뿐만 아니라 SQL은 "사용자"에 매우 사실이 예약 된 단어 만 변경하고, 그것은이에 변화를 같이 U 경우 U에게 최고의 서비스를 제공합니다

    오라클뿐만 아니라 SQL은 "사용자"에 매우 사실이 예약 된 단어 만 변경하고, 그것은이에 변화를 같이 U 경우 U에게 최고의 서비스를 제공합니다

    UPDATE system_info set field_value = 'NewValue' 
    

    system_users의 사용자는 users.role_type = info.field_desc에 대한 정보 system_info 가입 users.user_name가 = 어디 UNAME '

  6. from https://stackoverflow.com/questions/8940471/sql-error-ora-00933-sql-command-not-properly-ended by cc-by-sa and MIT license