Conversion Function

Oracle TO_DATE Function Examples

Posted on
Oracle TO_DATE Function by Examples Oracle TO_DATE function can convert a date time string into a value acceptable for converting string into datetime type. There’re 4 major components in Oracle TO_DATE function input arguments. Date time string (char) This is the main input variable that you shall use. This is mandatory in TO_DATE function argument […]
PL/SQL

How to Resolve PLS-00103: Encountered the symbol when expecting one of the

Posted on
PLS-00103 I cannot cover all error patterns of PL-00103 in this post, here is one case that encounter PLS-00103 in anonymous PL/SQL block using EXECUTE IMMEDIATE. SQL> begin   2    execute immediate ‘select nvl(first_name, ‘NO_VALUE’) from employees’;   3  end;   4  /   execute immediate ‘select nvl(first_name, ‘NO_VALUE’) from employees’;       […]
PL/SQL

How to Resolve ORA-06502: PL/SQL: numeric or value error: character to number conversion error

Posted on
ORA-06502 due to Character Type Conversion
ORA-06502 ORA-06502 means that PL/SQL engine cannot convert a character-typed string into a number or a subset of arithmetic for overall evaluation. Mostly, it’s because of the following problems: Numeric Type Conversion Numeric Operator Precedence ORA-06502 Due to Numeric Type Conversion ORA-06502 tells you that PL/SQL engine cannot convert a string into a number. Which […]
SQL

How to Revert INSERT INTO by DELETE FROM Statements

Posted on
Revert INSERT INTO Suppose that you have created two rows by INSERT INTO statements like this: SQL> INSERT INTO HR.EMPLOYEES (EMPLOYEE_ID, LAST_NAME, EMAIL, HIRE_DATE, JOB_ID) VALUES (207, ‘Chen’, ‘chen@example.com’, ’25-APR-19′, ‘SA_REP’); 1 row created. SQL> INSERT INTO HR.EMPLOYEES (EMPLOYEE_ID, LAST_NAME, EMAIL, HIRE_DATE, JOB_ID) VALUES (208, ‘Smit’, ‘smit@example.com’, ’25-APR-19′, ‘FI_MGR’); 1 row created. If you are […]
SQL

How to Resolve ORA-00903: invalid table name

Posted on
In this post, I will introduce 3 main error patterns about ORA-00903, they are: Violating Naming Rules Missing Quotes Incorrect Syntax ORA-00903 due to Violating Naming Rules Without complying with database object naming rules, we can’t create a table with unusual strings in normal way. Let’s see some cases that throw ORA-00903. First of all, […]
SQL

如何解決ORA-00904 無效的 ID

Posted on
ORA-00904 通常,Oracle會將大多數識別名視為不區分大小寫的識別名,但不包括密碼。但是在ORA-00904生成無效識別名的情況下應該注意一些特殊用法。 不僅ORA-00904,ORA-00903和ORA-00911也與物件識別名的無效使用有關。更具體地說,ORA-00903警告用戶無效的表格名稱,ORA-00911則是非法字元的使用。 根據Oracle資料庫物件名稱和限定符,有兩種有效的命名形式來建立資料庫物件。一個是非引用識別名,另一個是帶引號的識別名。 稍後,我們還將討論有關ORA-00904無效識別名的更多問題。 每個部分的摘要 以下是我們將在本文中討論的每個部​​分的摘要。 無引號識別名(鬆散形式) 它們沒有標點符號或任何其他特殊處理。只要它們基本上是等效的字元串,我們就可以在SQL語句中不區分大小地靈活使用它們。所以我通常在這篇文章中將其稱為鬆散形式 本節中的錯誤模式包括: 由於不存在的欄位而導致的ORA-00904 由於不存在的函數而導致的ORA-00904 由於拼寫錯誤的欄位而導致的ORA-00904 帶引號的識別名(精確形式) 它們以雙引號(””)開頭和結尾。您可以將幾乎所有字元放在雙引號中,包括空格和保留字。這種識別名的使用應該與最初定義的完全一致。所以我通常在這篇文章中將其稱為精確形式。 本節中的錯誤模式包括: 由於缺少雙引號而導致的ORA-00904 欄位名稱中的空白 其他命名規則 不僅有引號形式,還有無引號形式,有幾個與ORA-00904相關的重要命名規則,如保留字,有效特殊字元和識別名長度,我們也應該注意。 本節中的錯誤模式包括: 由於使用保留字而導致的ORA-00904 由於以數字開頭而導致的ORA-00904 由於濫用特殊字元而導致的ORA-00911 由於識別名超過30字節而導致的ORA-00972 由於錯誤添加了額外的逗號而導致的ORA-00904 拼寫錯誤的欄位名稱是上面討論過的錯誤模式,你必須更正識別名以使你的語句有效。在本節中,我們將討論ORA-00904的一個非常奇怪的錯誤模式,這是在CREATE TABLE中錯誤添加的額外逗號。 由於PL/SQL中的變數宣告順序不正確而導致的ORA-00904 編程單元允許我們宣告變數,控制流程並輸出結果。調試編程單元有時是一項漫長而乏味的工作。在本節中,您可以在PL/SQL代碼塊中看到ORA-00904的錯誤模式,該錯誤模式與變數宣告的順序有關。 我們來看一下欄位名稱上ORA-00904的一些錯誤類型。在大多數情況下,濫用欄位名稱是ORA-00904的主要來源。 採用鬆散形式所發生的ORA-00904 通常,我們會建立一個表格而不使用雙引號: SQL> create table all_names_1 (First_Name varchar2(25), Last_Name varchar2(25)); Table created. 然後我們插入一些數據。 SQL> insert into all_names_1 select distinct first_name, last_name from employees; 107 […]
SQL

如何解决ORA-00904 标识符无效

Posted on
ORA-00904 Invalid Identifier - Oracle Database Object Name Recognition Examples
ORA-00904 ORA-00904表示您在语句中使用了不匹配的列名或不正确的语法。通常,错误不仅发生在SELECT或INSERT中,还发生在UPDATE,DELETE,CREATE TABLE,ALTER TABLE和PL/SQL块中。 大多数用户不会相信错误,但事实上SQL解析器从未犯过任何错误。在这篇文章中,您可能会看到一些关于ORA-00904的错误模式,其中一个可能与您的情况相符。由于大多数用户错误是由区分大小写的问题引起的,因此我们必须首先解释松散形式和精确形式之间的差异。 通常,Oracle会将大多数标识符排除在密码之外,并将其视为不区分大小写的标识符。但是在ORA-00904无效标识符的情况下应该注意一些特殊用法。 不仅ORA-00904,ORA-00903和ORA-00911也与对象标识符的无效使用有关。更具体地说,ORA-00903警告用户无效的表名,并引发ORA-00911来定位非法字符 松散形式与精确形式 根据Oracle数据库对象名称和限定符,有两种有效的命名形式来创建数据库对象。一个是非引用标识符,另一个是带引号的标识符。为了避免ORA-00904,您必须知道两种命名形式之间的明显差异。 非引用标识符(松散形式) 它们没有标点符号或任何其他特殊处理。只要它们基本上是等效的字符串,我们就可以在SQL语句中不区分大小地灵活使用它们。所以我通常在这篇文章中将其称为松散形式。实际上,非引用标识符都被认为是上层标识符。这个概念将帮助您更好地了解ORA-00904。 带引号的标识符(精确形式) 它们以双引号(””)开头和结尾。您可以将几乎所有字符放在双引号中,包括空格和保留字。这种标识符应该与最初定义的完全一致。所以我通常在这篇文章中将其称为精确形式。据我所知,这是ORA-00904的主要来源。 稍后,我们还将讨论有关ORA-00904的更多问题,以区分引用的和未引用的标识符。 ORA-00904的错误模式 在大多数情况下,滥用列名是ORA-00904的主要来源,其余的是语法错误。在这篇文章中,我们将在以下部分讨论ORA-00904的几种错误模式。 SELECT或INSERT中的ORA-00904 WHERE,ORDER BY或GROUP BY中的ORA-00904 CREATE TABLE中的ORA-00904 ALTER TABLE中的ORA-00904 PL/SQL中的ORA-00904 A. SELECT或INSERT中的ORA-00904 SELECT或INSERT中列出的任何列都有机会生成此错误。 在本节中,ORA-00904会警告用户出现问题,这可能是由以下原因之一引起的: 不存在的列 不存在的功能 拼写错误的列 区分大小写的列 列名称中的空白 1. 由于不存在的列而导致的ORA-00904 通常,我们创建一个表而不使用双引号: SQL> create table all_names_1 (First_Name varchar2(25), Last_Name varchar2(25)); Table created. 然后我们插入一些数据。 SQL> insert into all_names_1 select distinct first_name, […]