Interview Questions Answers.ORG
Interviewer And Interviewee Guide
Interviews
Quizzes
Home
Quizzes
Interviews DB Oracle Interviews:Concepts and ArchitectureData AccessDatabase ArchitectureDatabase ManagementDatabase Security OracleDistributed ProcessingFlexfieldForms ReportsGeneral OracleMemory ManagementMTO-SAP Financial AccountingOCIOracle AOLOracle AROracle Backup RecoveryOracle D2KOracle DatabaseOracle Database DeveloperOracle DB OptimizationOracle DBAOracle DeveloperOracle ETLOracle Forms 3.0Oracle Forms 4.0Oracle GLOracle PL-SQLOracle RMANOracle ScenariosOracle SecurityOracle SQLOracle System ArchitectureOracle Technology Network (OTN)Programmatic ConstructsRAC (Real Application Clusters)SQL Plus
Copyright © 2018. All Rights Reserved
Oracle Database Interview Question:
What Happens If Variable Names Collide with Table/Column Names?
Submitted by: AdministratorWhen a variable name collides with a column name, PL/SQL will use it as the variable if it is used where variable is allowed; It will be used as the column, if it is used where variable is not allowed but column is allowed. Here is a good example of variable names collide with column names:
CREATE TABLE student (id NUMBER(5) PRIMARY KEY,
first_name VARCHAR(80) NOT NULL,
last_name VARCHAR(80) NOT NULL);
Table created.
DECLARE
id NUMBER;
first_name CHAR(10);
BEGIN
id := 29;
first_name := 'Bob';
INSERT INTO student VALUES(id, first_name, 'Henry');
first_name := 'Joe';
INSERT INTO student VALUES(id+1, first_name, 'Bush');
first_name := 'ggl';
UPDATE student SET first_name = first_name WHERE id = 29;
-- 1 row updated
-- Both 'first_name's are treated as column names
UPDATE student SET first_name = first_name
WHERE id = id+1;
-- 0 rows updated
-- Both "id"s are treated as variable names
DELETE FROM student WHERE id = id;
-- 2 rows deleted
END;
/
Submitted by: Administrator
CREATE TABLE student (id NUMBER(5) PRIMARY KEY,
first_name VARCHAR(80) NOT NULL,
last_name VARCHAR(80) NOT NULL);
Table created.
DECLARE
id NUMBER;
first_name CHAR(10);
BEGIN
id := 29;
first_name := 'Bob';
INSERT INTO student VALUES(id, first_name, 'Henry');
first_name := 'Joe';
INSERT INTO student VALUES(id+1, first_name, 'Bush');
first_name := 'ggl';
UPDATE student SET first_name = first_name WHERE id = 29;
-- 1 row updated
-- Both 'first_name's are treated as column names
UPDATE student SET first_name = first_name
WHERE id = id+1;
-- 0 rows updated
-- Both "id"s are treated as variable names
DELETE FROM student WHERE id = id;
-- 2 rows deleted
END;
/
Submitted by: Administrator
SELECT * FROM student;
0 rows selected
Noticed that "id = id+1" in the WHERE clause will be evaluated to FALSE, because both "id"s are treated as variables. Similarly "id = id" will also be evaluated to TRUE in the WHERE clause. But both "first_name"s in the SET clause will be treated as column names.
Submitted by: Administrator
0 rows selected
Noticed that "id = id+1" in the WHERE clause will be evaluated to FALSE, because both "id"s are treated as variables. Similarly "id = id" will also be evaluated to TRUE in the WHERE clause. But both "first_name"s in the SET clause will be treated as column names.
Submitted by: Administrator
Copyright 2007-2024 by Interview Questions Answers .ORG All Rights Reserved.
https://InterviewQuestionsAnswers.ORG.
https://InterviewQuestionsAnswers.ORG.