Insert from java to oracle
im doing an insert to table EMPLOYEES:
EMPLOYEE_ID NUMBER(6,0)
FIRST_NAME VARCHAR2(20 BYTE)
LAST_NAME VARCHAR2(25 BYTE)
EMAIL VARCHAR2(25 BYTE)
PHONE_NUMBER VARCHAR2(20 BYTE)
HIRE_DATE DATE
JOB_ID VARCHAR2(10 BYTE)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6,0)
DEPARTMENT_ID NUMBER(4,0)
I call to this SP from java:
create or replace PROCEDURE SP_EMPLOYES_INSERT
(
FIRST_NAME IN EMPLOYEES.EMPLOYEE_ID%TYPE
, LAST_NAME IN EMPLOYEES.LAST_NAME%TYPE
, EMAIL IN EMPLOYEES.EMAIL%TYPE
, PHONE_NUMBER IN EMPLOYEES.PHONE_NUMBER%TYPE
, HIRE_DATE IN EMPLOYEES.HIRE_DATE%TYPE
, JOB_ID IN EMPLOYEES.JOB_ID%TYPE
, SALARY IN EMPLOYEES.SALARY%TYPE
, COMMISSION_PCT IN EMPLOYEES.COMMISSION_PCT%TYPE
, MANAGER_ID IN EMPLOYEES.MANAGER_ID%TYPE
, DEPARTMENT_ID IN EMPLOYEES.DEPARTMENT_ID%TYPE
, C_EMPLOYE OUT SYS_REFCURSOR
) IS
EMP_ID EMPLOYEES.EMPLOYEE_ID%TYPE;
MENSAJE VARCHAR2(1000);
BEGIN
SELECT (NVL(MAX(EMPLOYEE_ID),0) + 1) INTO EMP_ID FROM EMPLOYEES;
INSERT INTO EMPLOYEES(EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID)
VALUES(EMP_ID ,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID);
MENSAJE:= 'Se inserto con exito';
OPEN C_EMPLOYE FOR
SELECT MENSAJE MSG FROM DUAL;
EXCEPTION
WHEN OTHERS THEN
MENSAJE:= SQLERRM;
OPEN C_EMPLOYE FOR
SELECT MENSAJE MSG FROM DUAL;
--DBMS_OUTPUT.PUT_LINE(SQLERRM);
END SP_EMPLOYES_INSERT;
And the code in java is:
public boolean PutEmployee(int action) throws SQLException
boolean result = false;
Connection con = null;
CallableStatement stmt = null;
ResultSet rs = null;
String mensaje = null;
try
catch(Exception ex)
System.out.print(ex.getMessage());
result = false;
finally
if(con!=null)
con.close();
if(rs !=null)
rs.close();
return result;
And i get an error in the catch: ORA-01722: "número no válido" when i do the execute in the callablestatement.
I dont know how to cast java double to number(8,2), number(2,2).
Anyone kwnow how i could insert this ?
Im puting this values to the object employee:
empService.objEMPLOYE.setCommissionPct(0.3);
empService.objEMPLOYE.setDepartmentId(3);
empService.objEMPLOYE.setEmail("asd@hotmail.com");
empService.objEMPLOYE.setFirstName("Matias");
empService.objEMPLOYE.setHireDate(new java.sql.Date(2018, 11, 10));
empService.objEMPLOYE.setJobId("a1");
empService.objEMPLOYE.setLastName("Perez");
empService.objEMPLOYE.setManagerId(1);
empService.objEMPLOYE.setPhoneNumber("1545659865");
empService.objEMPLOYE.setSalary(150.3);
Any idea?
Thanks!
java sql oracle plsql
|
show 1 more comment
im doing an insert to table EMPLOYEES:
EMPLOYEE_ID NUMBER(6,0)
FIRST_NAME VARCHAR2(20 BYTE)
LAST_NAME VARCHAR2(25 BYTE)
EMAIL VARCHAR2(25 BYTE)
PHONE_NUMBER VARCHAR2(20 BYTE)
HIRE_DATE DATE
JOB_ID VARCHAR2(10 BYTE)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6,0)
DEPARTMENT_ID NUMBER(4,0)
I call to this SP from java:
create or replace PROCEDURE SP_EMPLOYES_INSERT
(
FIRST_NAME IN EMPLOYEES.EMPLOYEE_ID%TYPE
, LAST_NAME IN EMPLOYEES.LAST_NAME%TYPE
, EMAIL IN EMPLOYEES.EMAIL%TYPE
, PHONE_NUMBER IN EMPLOYEES.PHONE_NUMBER%TYPE
, HIRE_DATE IN EMPLOYEES.HIRE_DATE%TYPE
, JOB_ID IN EMPLOYEES.JOB_ID%TYPE
, SALARY IN EMPLOYEES.SALARY%TYPE
, COMMISSION_PCT IN EMPLOYEES.COMMISSION_PCT%TYPE
, MANAGER_ID IN EMPLOYEES.MANAGER_ID%TYPE
, DEPARTMENT_ID IN EMPLOYEES.DEPARTMENT_ID%TYPE
, C_EMPLOYE OUT SYS_REFCURSOR
) IS
EMP_ID EMPLOYEES.EMPLOYEE_ID%TYPE;
MENSAJE VARCHAR2(1000);
BEGIN
SELECT (NVL(MAX(EMPLOYEE_ID),0) + 1) INTO EMP_ID FROM EMPLOYEES;
INSERT INTO EMPLOYEES(EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID)
VALUES(EMP_ID ,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID);
MENSAJE:= 'Se inserto con exito';
OPEN C_EMPLOYE FOR
SELECT MENSAJE MSG FROM DUAL;
EXCEPTION
WHEN OTHERS THEN
MENSAJE:= SQLERRM;
OPEN C_EMPLOYE FOR
SELECT MENSAJE MSG FROM DUAL;
--DBMS_OUTPUT.PUT_LINE(SQLERRM);
END SP_EMPLOYES_INSERT;
And the code in java is:
public boolean PutEmployee(int action) throws SQLException
boolean result = false;
Connection con = null;
CallableStatement stmt = null;
ResultSet rs = null;
String mensaje = null;
try
catch(Exception ex)
System.out.print(ex.getMessage());
result = false;
finally
if(con!=null)
con.close();
if(rs !=null)
rs.close();
return result;
And i get an error in the catch: ORA-01722: "número no válido" when i do the execute in the callablestatement.
I dont know how to cast java double to number(8,2), number(2,2).
Anyone kwnow how i could insert this ?
Im puting this values to the object employee:
empService.objEMPLOYE.setCommissionPct(0.3);
empService.objEMPLOYE.setDepartmentId(3);
empService.objEMPLOYE.setEmail("asd@hotmail.com");
empService.objEMPLOYE.setFirstName("Matias");
empService.objEMPLOYE.setHireDate(new java.sql.Date(2018, 11, 10));
empService.objEMPLOYE.setJobId("a1");
empService.objEMPLOYE.setLastName("Perez");
empService.objEMPLOYE.setManagerId(1);
empService.objEMPLOYE.setPhoneNumber("1545659865");
empService.objEMPLOYE.setSalary(150.3);
Any idea?
Thanks!
java sql oracle plsql
what is the error message
– Eray Balkanli
Nov 11 '18 at 14:55
What is happening when you try casting like: stmt.setObject(7, (number)salaryValue, OracleTypes.NUMBER);
– Eray Balkanli
Nov 11 '18 at 14:58
@ErayBalkanli what is the type ofobjEMPLOYE.getSalary()
? And why you dosalaryValue.replace(".", ",")
?
– user7294900
Nov 11 '18 at 15:30
The value for catch(Exception ex) ex.getmessage() is: For input string: ".3"
– susta250
Nov 11 '18 at 15:31
1
Try to isolate the problem. Create a table with a singlenumber(2,2)
column, a procedure for writing into said table, and call it from java usingstmt.setDouble(1, 0.3)
. Does the exception still happen?
– Timekiller
Nov 12 '18 at 14:04
|
show 1 more comment
im doing an insert to table EMPLOYEES:
EMPLOYEE_ID NUMBER(6,0)
FIRST_NAME VARCHAR2(20 BYTE)
LAST_NAME VARCHAR2(25 BYTE)
EMAIL VARCHAR2(25 BYTE)
PHONE_NUMBER VARCHAR2(20 BYTE)
HIRE_DATE DATE
JOB_ID VARCHAR2(10 BYTE)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6,0)
DEPARTMENT_ID NUMBER(4,0)
I call to this SP from java:
create or replace PROCEDURE SP_EMPLOYES_INSERT
(
FIRST_NAME IN EMPLOYEES.EMPLOYEE_ID%TYPE
, LAST_NAME IN EMPLOYEES.LAST_NAME%TYPE
, EMAIL IN EMPLOYEES.EMAIL%TYPE
, PHONE_NUMBER IN EMPLOYEES.PHONE_NUMBER%TYPE
, HIRE_DATE IN EMPLOYEES.HIRE_DATE%TYPE
, JOB_ID IN EMPLOYEES.JOB_ID%TYPE
, SALARY IN EMPLOYEES.SALARY%TYPE
, COMMISSION_PCT IN EMPLOYEES.COMMISSION_PCT%TYPE
, MANAGER_ID IN EMPLOYEES.MANAGER_ID%TYPE
, DEPARTMENT_ID IN EMPLOYEES.DEPARTMENT_ID%TYPE
, C_EMPLOYE OUT SYS_REFCURSOR
) IS
EMP_ID EMPLOYEES.EMPLOYEE_ID%TYPE;
MENSAJE VARCHAR2(1000);
BEGIN
SELECT (NVL(MAX(EMPLOYEE_ID),0) + 1) INTO EMP_ID FROM EMPLOYEES;
INSERT INTO EMPLOYEES(EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID)
VALUES(EMP_ID ,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID);
MENSAJE:= 'Se inserto con exito';
OPEN C_EMPLOYE FOR
SELECT MENSAJE MSG FROM DUAL;
EXCEPTION
WHEN OTHERS THEN
MENSAJE:= SQLERRM;
OPEN C_EMPLOYE FOR
SELECT MENSAJE MSG FROM DUAL;
--DBMS_OUTPUT.PUT_LINE(SQLERRM);
END SP_EMPLOYES_INSERT;
And the code in java is:
public boolean PutEmployee(int action) throws SQLException
boolean result = false;
Connection con = null;
CallableStatement stmt = null;
ResultSet rs = null;
String mensaje = null;
try
catch(Exception ex)
System.out.print(ex.getMessage());
result = false;
finally
if(con!=null)
con.close();
if(rs !=null)
rs.close();
return result;
And i get an error in the catch: ORA-01722: "número no válido" when i do the execute in the callablestatement.
I dont know how to cast java double to number(8,2), number(2,2).
Anyone kwnow how i could insert this ?
Im puting this values to the object employee:
empService.objEMPLOYE.setCommissionPct(0.3);
empService.objEMPLOYE.setDepartmentId(3);
empService.objEMPLOYE.setEmail("asd@hotmail.com");
empService.objEMPLOYE.setFirstName("Matias");
empService.objEMPLOYE.setHireDate(new java.sql.Date(2018, 11, 10));
empService.objEMPLOYE.setJobId("a1");
empService.objEMPLOYE.setLastName("Perez");
empService.objEMPLOYE.setManagerId(1);
empService.objEMPLOYE.setPhoneNumber("1545659865");
empService.objEMPLOYE.setSalary(150.3);
Any idea?
Thanks!
java sql oracle plsql
im doing an insert to table EMPLOYEES:
EMPLOYEE_ID NUMBER(6,0)
FIRST_NAME VARCHAR2(20 BYTE)
LAST_NAME VARCHAR2(25 BYTE)
EMAIL VARCHAR2(25 BYTE)
PHONE_NUMBER VARCHAR2(20 BYTE)
HIRE_DATE DATE
JOB_ID VARCHAR2(10 BYTE)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6,0)
DEPARTMENT_ID NUMBER(4,0)
I call to this SP from java:
create or replace PROCEDURE SP_EMPLOYES_INSERT
(
FIRST_NAME IN EMPLOYEES.EMPLOYEE_ID%TYPE
, LAST_NAME IN EMPLOYEES.LAST_NAME%TYPE
, EMAIL IN EMPLOYEES.EMAIL%TYPE
, PHONE_NUMBER IN EMPLOYEES.PHONE_NUMBER%TYPE
, HIRE_DATE IN EMPLOYEES.HIRE_DATE%TYPE
, JOB_ID IN EMPLOYEES.JOB_ID%TYPE
, SALARY IN EMPLOYEES.SALARY%TYPE
, COMMISSION_PCT IN EMPLOYEES.COMMISSION_PCT%TYPE
, MANAGER_ID IN EMPLOYEES.MANAGER_ID%TYPE
, DEPARTMENT_ID IN EMPLOYEES.DEPARTMENT_ID%TYPE
, C_EMPLOYE OUT SYS_REFCURSOR
) IS
EMP_ID EMPLOYEES.EMPLOYEE_ID%TYPE;
MENSAJE VARCHAR2(1000);
BEGIN
SELECT (NVL(MAX(EMPLOYEE_ID),0) + 1) INTO EMP_ID FROM EMPLOYEES;
INSERT INTO EMPLOYEES(EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID)
VALUES(EMP_ID ,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID);
MENSAJE:= 'Se inserto con exito';
OPEN C_EMPLOYE FOR
SELECT MENSAJE MSG FROM DUAL;
EXCEPTION
WHEN OTHERS THEN
MENSAJE:= SQLERRM;
OPEN C_EMPLOYE FOR
SELECT MENSAJE MSG FROM DUAL;
--DBMS_OUTPUT.PUT_LINE(SQLERRM);
END SP_EMPLOYES_INSERT;
And the code in java is:
public boolean PutEmployee(int action) throws SQLException
boolean result = false;
Connection con = null;
CallableStatement stmt = null;
ResultSet rs = null;
String mensaje = null;
try
catch(Exception ex)
System.out.print(ex.getMessage());
result = false;
finally
if(con!=null)
con.close();
if(rs !=null)
rs.close();
return result;
And i get an error in the catch: ORA-01722: "número no válido" when i do the execute in the callablestatement.
I dont know how to cast java double to number(8,2), number(2,2).
Anyone kwnow how i could insert this ?
Im puting this values to the object employee:
empService.objEMPLOYE.setCommissionPct(0.3);
empService.objEMPLOYE.setDepartmentId(3);
empService.objEMPLOYE.setEmail("asd@hotmail.com");
empService.objEMPLOYE.setFirstName("Matias");
empService.objEMPLOYE.setHireDate(new java.sql.Date(2018, 11, 10));
empService.objEMPLOYE.setJobId("a1");
empService.objEMPLOYE.setLastName("Perez");
empService.objEMPLOYE.setManagerId(1);
empService.objEMPLOYE.setPhoneNumber("1545659865");
empService.objEMPLOYE.setSalary(150.3);
Any idea?
Thanks!
java sql oracle plsql
java sql oracle plsql
edited Nov 11 '18 at 17:47
susta250
asked Nov 11 '18 at 14:47
susta250susta250
112
112
what is the error message
– Eray Balkanli
Nov 11 '18 at 14:55
What is happening when you try casting like: stmt.setObject(7, (number)salaryValue, OracleTypes.NUMBER);
– Eray Balkanli
Nov 11 '18 at 14:58
@ErayBalkanli what is the type ofobjEMPLOYE.getSalary()
? And why you dosalaryValue.replace(".", ",")
?
– user7294900
Nov 11 '18 at 15:30
The value for catch(Exception ex) ex.getmessage() is: For input string: ".3"
– susta250
Nov 11 '18 at 15:31
1
Try to isolate the problem. Create a table with a singlenumber(2,2)
column, a procedure for writing into said table, and call it from java usingstmt.setDouble(1, 0.3)
. Does the exception still happen?
– Timekiller
Nov 12 '18 at 14:04
|
show 1 more comment
what is the error message
– Eray Balkanli
Nov 11 '18 at 14:55
What is happening when you try casting like: stmt.setObject(7, (number)salaryValue, OracleTypes.NUMBER);
– Eray Balkanli
Nov 11 '18 at 14:58
@ErayBalkanli what is the type ofobjEMPLOYE.getSalary()
? And why you dosalaryValue.replace(".", ",")
?
– user7294900
Nov 11 '18 at 15:30
The value for catch(Exception ex) ex.getmessage() is: For input string: ".3"
– susta250
Nov 11 '18 at 15:31
1
Try to isolate the problem. Create a table with a singlenumber(2,2)
column, a procedure for writing into said table, and call it from java usingstmt.setDouble(1, 0.3)
. Does the exception still happen?
– Timekiller
Nov 12 '18 at 14:04
what is the error message
– Eray Balkanli
Nov 11 '18 at 14:55
what is the error message
– Eray Balkanli
Nov 11 '18 at 14:55
What is happening when you try casting like: stmt.setObject(7, (number)salaryValue, OracleTypes.NUMBER);
– Eray Balkanli
Nov 11 '18 at 14:58
What is happening when you try casting like: stmt.setObject(7, (number)salaryValue, OracleTypes.NUMBER);
– Eray Balkanli
Nov 11 '18 at 14:58
@ErayBalkanli what is the type of
objEMPLOYE.getSalary()
? And why you do salaryValue.replace(".", ",")
?– user7294900
Nov 11 '18 at 15:30
@ErayBalkanli what is the type of
objEMPLOYE.getSalary()
? And why you do salaryValue.replace(".", ",")
?– user7294900
Nov 11 '18 at 15:30
The value for catch(Exception ex) ex.getmessage() is: For input string: ".3"
– susta250
Nov 11 '18 at 15:31
The value for catch(Exception ex) ex.getmessage() is: For input string: ".3"
– susta250
Nov 11 '18 at 15:31
1
1
Try to isolate the problem. Create a table with a single
number(2,2)
column, a procedure for writing into said table, and call it from java using stmt.setDouble(1, 0.3)
. Does the exception still happen?– Timekiller
Nov 12 '18 at 14:04
Try to isolate the problem. Create a table with a single
number(2,2)
column, a procedure for writing into said table, and call it from java using stmt.setDouble(1, 0.3)
. Does the exception still happen?– Timekiller
Nov 12 '18 at 14:04
|
show 1 more comment
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53249847%2finsert-from-java-to-oracle%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53249847%2finsert-from-java-to-oracle%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
what is the error message
– Eray Balkanli
Nov 11 '18 at 14:55
What is happening when you try casting like: stmt.setObject(7, (number)salaryValue, OracleTypes.NUMBER);
– Eray Balkanli
Nov 11 '18 at 14:58
@ErayBalkanli what is the type of
objEMPLOYE.getSalary()
? And why you dosalaryValue.replace(".", ",")
?– user7294900
Nov 11 '18 at 15:30
The value for catch(Exception ex) ex.getmessage() is: For input string: ".3"
– susta250
Nov 11 '18 at 15:31
1
Try to isolate the problem. Create a table with a single
number(2,2)
column, a procedure for writing into said table, and call it from java usingstmt.setDouble(1, 0.3)
. Does the exception still happen?– Timekiller
Nov 12 '18 at 14:04