I am working with a stored procedure that is used about four times per year to update a table in the database. Basically the script contains a bunch of insert statements that insert data into a particular Oracle table. Now when I write insert statements I like to list out all of the column names and values being inserted into a column. See line #1 below. I noticed that the last time the script was updated by a former team member that instead of listing out all of the column names for the insert, that they use a SELECT dual statement to select data into the table; see line #2. So (Question 1) are both insert statements acceptable? If so then is one method better than the other? (Question 2).
#1 INSERT INTO CUSTOMER (ID,FirstName,LastName) VALUES (109, 'Joe','Smith');
#2 INSERT INTO CUSTOMER SELECT 109,'Joe','Smith' FROM DUAL;