programing

SQL 오류: ORA-00933:SQL 명령이 올바르게 종료되지 않음

goodsources 2023. 2. 14. 20:15
반응형

SQL 오류: ORA-00933:SQL 명령이 올바르게 종료되지 않음

Joins를 사용하여 Oracle 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

하지만 여전히 같은 오류가 있는 경우 오류 이유와 해결 방법을 알려줄 수 있습니까?

세미콜론;명령어 끝에서도 같은 오류가 발생했습니다.

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.

도움이 됐으면 좋겠다.

Oracle에서는 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

쿼리는 다음과 같이 표시됩니다.

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

아래 질문에서 도움을 받을 수 있습니다.

이 질문의 실제 컨텍스트의 경우는 아니지만 다음 쿼리에서 이 예외를 재현할 수 있습니다.

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

단어로 된 작은 따옴표can't그리고.don't줄을 끊었다.문자열에 내부 따옴표가 하나만 있는 경우."he don't want" oracle은 보다 관련성이 높은 따옴표로 둘러싸인 문자열 not guffly terminated 오류를 발생시키지만, 2개의 SQL 명령어가 제대로 종료되지 않은 경우 느려집니다.

요약: 쿼리에 큰따옴표가 있는지 확인합니다.

sql은 "users"와 마찬가지로 oracle에서도 마찬가지입니다.예약된 단어지만 변경해 주세요.이것으로 변경해 주세요.

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'

언급URL : https://stackoverflow.com/questions/8940471/sql-error-ora-00933-sql-command-not-properly-ended

반응형