ORA-00905

Error: ORA-00905: missing keyword

Causa: A required keyword is missing.

Acción: Correct the syntax.


Deja tu comentario:

¿No sabes cómo solucionar el error? ¿O lo has conseguido resolver y quieres ayudar a otros usuarios?

Para comentar, haz login con tu cuenta de


COMENTARIOS:

por Anónimo | 01/10/2007 04:35:43

RE: ORA-00905

select to_char(sysdate,'DD/MM/YY')
into V_FECHA
from dual;

por mala la wea | 10/12/2007 21:38:15

RE: ORA-00905

nop, no funciono

por dsd | 02/12/2008 04:31:10

RE: ORA-00905

Por que me da este error??

por David | 02/12/2008 11:31:09

RE: ORA-00905

Hola dsd.
Puedes poner la SQL para la que te da este error?

por YOYO | 19/09/2009 19:46:48

RE: ORA-00905

SQL> SELECT d.department_id, d.department_name, d.manager_id, e.first_name, d.lo
cation_id, SUM(salary)
2 FROM departments d LEFT OUTER JOIN employees e
3 GROUP BY d.department_id;
GROUP BY d.department_id
*
ERROR en lÝnea 3:
ORA-00905: falta una palabra clave

por ANONIMO | 11/11/2009 18:32:55

RE: ORA-00905

COMO SOLUCIONO EL ERROR QUE SALE?
4. Cree un procedimiento que reciba por parámetros el código de un empleado administrador (Manager). El procedimiento Deberá armar un sql dinámico que recupero el ID, Apellido y nombre de todos los empleados que dependen del manager. Prever que el código de manager sea variable
CREATE OR REPLACE PROCEDURE ADMIN_DBMS (COD NUMBER)
IS
V_CURSOR NUMBER;
V_SENTENCIA VARCHAR2(200);
V_FILAS NUMBER;
VAR_ID NUMBER;
VAR_NOMBRE VARCHAR2(30);
VAR_APELLIDO VARCHAR2(30);
BEGIN
V_SENTENCIA := ‘SELECT ID, NOMBRE, APELLIDO
INTO VAR_ID, VAR_NOMBRE, VAR_APELLIDO
FROM S_EMPLEADO
WHERE ID_GERENTE = :PID’;
V_CURSOR := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(V_CURSOR, V_SENTENCIA, DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(V_CURSOR, ‘:PID’, COD);
DBMS_SQL.DEFINE_COLUMN(V_CURSOR, 1, VAR_ID, 7);
DBMS_SQL.DEFINE_COLUMN(V_CURSOR, 2, VAR_NOMBRE, 30);
DBMS_SQL.DEFINE_COLUMN(V_CURSOR, 3, VAR_APELLIDO, 30);
V_FILAS := DBMS_SQL.EXECUTE(V_CURSOR);
LOOP
IF DBMS_SQL.FETCH_ROWS(V_CURSOR) = 0 THEN
EXIT;
ELSE
DBMS_SQL.COLUMN_VALUE(V_CURSOR,1,VAR_ID);
DBMS_SQL.COLUMN_VALUE(V_CURSOR,2,VAR_NOMBRE);
DBMS_SQL.COLUMN_VALUE(V_CURSOR,3,VAR_APELLIDO);
END IF;
END LOOP;
DBMS_SQL.CLOSE_CURSOR(V_CURSOR);
END;
----- EL ERROR QUE ME SALE ES ESTE
SQL> EXECUTE ADMIN_DBMS (1);
BEGIN ADMIN_DBMS (1); END;
*
ERROR en línea 1:
ORA-00905: falta una palabra clave
ORA-06512: en "SYS.DBMS_SYS_SQL", línea 906
ORA-06512: en "SYS.DBMS_SQL", línea 39
ORA-06512: en "SYSTEM.ADMIN_DBMS", línea 15
ORA-06512: en línea 1

por ANONIMO | 11/11/2009 18:39:27

RE: ORA-00905

COMO SOLUCIONO EL ERROR QUE SALE?
4. Cree un procedimiento que reciba por parámetros el código de un empleado administrador (Manager). El procedimiento Deberá armar un sql dinámico que recupero el ID, Apellido y nombre de todos los empleados que dependen del manager. Prever que el código de manager sea variable
CREATE OR REPLACE PROCEDURE ADMIN_DBMS (COD NUMBER)
IS
V_CURSOR NUMBER;
V_SENTENCIA VARCHAR2(200);
V_FILAS NUMBER;
VAR_ID NUMBER;
VAR_NOMBRE VARCHAR2(30);
VAR_APELLIDO VARCHAR2(30);
BEGIN
V_SENTENCIA := ‘SELECT ID, NOMBRE, APELLIDO
INTO VAR_ID, VAR_NOMBRE, VAR_APELLIDO
FROM S_EMPLEADO
WHERE ID_GERENTE = :PID’;
V_CURSOR := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(V_CURSOR, V_SENTENCIA, DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(V_CURSOR, ‘:PID’, COD);
DBMS_SQL.DEFINE_COLUMN(V_CURSOR, 1, VAR_ID, 7);
DBMS_SQL.DEFINE_COLUMN(V_CURSOR, 2, VAR_NOMBRE, 30);
DBMS_SQL.DEFINE_COLUMN(V_CURSOR, 3, VAR_APELLIDO, 30);
V_FILAS := DBMS_SQL.EXECUTE(V_CURSOR);
LOOP
IF DBMS_SQL.FETCH_ROWS(V_CURSOR) = 0 THEN
EXIT;
ELSE
DBMS_SQL.COLUMN_VALUE(V_CURSOR,1,VAR_ID);
DBMS_SQL.COLUMN_VALUE(V_CURSOR,2,VAR_NOMBRE);
DBMS_SQL.COLUMN_VALUE(V_CURSOR,3,VAR_APELLIDO);
END IF;
END LOOP;
DBMS_SQL.CLOSE_CURSOR(V_CURSOR);
END;
----- EL ERROR QUE ME SALE ES ESTE
SQL> EXECUTE ADMIN_DBMS (1);
BEGIN ADMIN_DBMS (1); END;
*
ERROR en línea 1:
ORA-00905: falta una palabra clave
ORA-06512: en "SYS.DBMS_SYS_SQL", línea 906
ORA-06512: en "SYS.DBMS_SQL", línea 39
ORA-06512: en "SYSTEM.ADMIN_DBMS", línea 15
ORA-06512: en línea 1

por sergi | 30/07/2010 07:47:32

RE: ORA-00905

select rang_clie2 into C_rang_clie2 from SC_PARAM_MANTEDOR where rang_clie3 = 40000;

por sergi | 30/07/2010 09:23:07

RE: ORA-00905

select rang_clie2 into C_rang_clie2 from SC_PARAM_MANTEDOR where rang_clie3 = 40000;

por john | 28/10/2010 13:15:53

RE: ORA-00905

create or repla trigger aud_ins_persona
befor insert on person
for each row
begin
auditar("insert","persona",:new.cedula¡¡";"!!:new.nombres!!";":new.apellidos!!";"¡¡:new.ocupacion!!";":new.sexo!!";"¡¡new.estado_civil,"");
end;
cual es el error o que falta.

por manel | 08/11/2010 10:09:15

RE: ORA-00905

alter table albaranescabecera add constraint albaranescabecera_fk foreign key (codigo_cliente) references clientes(codigo_cliente) on update cascade;

por ariel | 17/12/2012 16:20:24

RE: ORA-00905

tengo este error, agradeceria me den una mano.
DECLARE
V_NOMBRE HR.EMPLOYEES.FIRST_NAME%TYPE;
V_APELLIDO HR.EMPLOYEES.LAST_NAME%TYPE;
CURSOR MICURSOR IS SELECT FIRST_NAME, LAST_NAME
FROM HR.EMPLOYEES WHERE SALARY = 2600;
BEGIN
OPEN MICURSOR;
LOOP
FETCH MICURSOR INTO V_NOMBRE, V_APELLIDO;
EXIT WHEN MICURSOR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(‘NOMBRE: ‘||V_NOMBRE||’, APELLIDO:’||V_APELLIDO);
END LOOP;
CLOSE MICURSOR;
END;

por ariel | 17/12/2012 16:20:55

RE: ORA-00905

tengo este error, agradeceria me den una mano.
DECLARE
V_NOMBRE HR.EMPLOYEES.FIRST_NAME%TYPE;
V_APELLIDO HR.EMPLOYEES.LAST_NAME%TYPE;
CURSOR MICURSOR IS SELECT FIRST_NAME, LAST_NAME
FROM HR.EMPLOYEES WHERE SALARY = 2600;
BEGIN
OPEN MICURSOR;
LOOP
FETCH MICURSOR INTO V_NOMBRE, V_APELLIDO;
EXIT WHEN MICURSOR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(‘NOMBRE: ‘||V_NOMBRE||’, APELLIDO:’||V_APELLIDO);
END LOOP;
CLOSE MICURSOR;
END;

por ariel | 17/12/2012 16:23:12

RE: ORA-00905

buenos dias, estoy tratando de ejecutar la siguiente query pero me da error,00905,
Incidencia,Grupo,prioridad, Fecha,Tri,horas ,Filtro
,Case Filtro
When 'ICFs' Then
case Prioridad
When 'P1' Then (Case When Horas <= 6 Then 'P1' Else 'Fuera de tiempo P1' End)
when 'P2' then (case when horas <= 12 then 'P2' else 'Fuera de tiempo P2' end)
when 'P3' then (case when horas <= 24 then'P3' else 'Fuera de tiempo P3' end)
When 'P4' Then (Case When Horas <= 24 Then 'P4'Else 'Fuera de tiempo P4' End)
End Prioridad
When 'IS' Then
Case Prioridad
When 'P1' Then (Case When Horas <= 4 Then 'P1' Else 'Fuera de tiempo P1' End)
when 'P2' then (case when horas <= 6 then 'P2' else 'Fuera de tiempo P2' end)
When 'P3' Then (Case When Horas <= 24 Then'P3' Else 'Fuera de tiempo P3' End)
When 'P4' Then (Case When Horas <= 48 Then 'P4'Else 'Fuera de tiempo P4' End)
End Prioridad
end Filtro

alguien me podria decir como puede resolverlo, por favor

por Nancy Acevedo | 16/08/2013 22:52:40

RE: ORA-00905

QUIERO CREAR ESTA TABLA EN SQL ME TIRA UN ERROR QUE NO LOGRO ENTENDER
ORA-00905: falta una palabra clave

create table Pedidos(
npedido INTEGER,
fecha DATE,
Cantidad DOUBLE,
cliente_Dni VARCHAR(10),
PPRIMARY KEY (npedido),
FOREIGN KEY (cliente_Dni) REFERENCES Cliente(Dni)
)

por rafael carrillo roque | 12/12/2013 16:04:30

RE: ORA-00905

Código SQL
--------------------------------------------------------------------------------
SET @HORA_INI = (SELECT CAST((CASE WHEN LEFT(HORA_INICIO,1) = '+' THEN
DATEADD(MINUTE,DATEPART (MINUTE,CONVERT ( TIME, SUBSTRING(HORA_INICIO,2,5))),
CASE TIPO WHEN 2 THEN @RANGO2
WHEN 1 THEN @RANGO1
ELSE
@RANGO1 END)

ELSE
CASE WHEN @RANGO1 < = CAST( CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
DATEADD(DAY,1,@FECHA)
ELSE
@FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME) THEN

CAST(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
DATEADD(DAY,1,@FECHA)
ELSE
@FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME)

ELSE
CASE WHEN TIPO = 2 THEN @RANGO1

WHEN TIPO = 1 THEN CAST(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
DATEADD(DAY,1,@FECHA)
ELSE
@FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME)

ELSE @RANGO1

END
END
END)AS DATETIME)
FROM @vTABLA_ACTIVIDADESHORARIO WHERE ID = @J
)


CODIGO ORACLE
_-------------------------------------------------------------------------

SELECT(CASE WHEN OHORA_INICIO = '+' THEN
(SELECT SUBSTR(TO_CHAR(A.HORA_INICIO),4,2)+1
FROM TMP_vTABLA_ACTIVIDADESHORARIO A
WHERE A.ID_TABLA=pIDTABLA AND
ROWNUM=1),
CASE D.TIPO WHEN 2 THEN RANGO2 WHEN 1 THEN RANGO1

ELSE RANGO1 END

ELSE
CASE WHEN RANGO1 <=(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
(SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)

ELSE pFECHA END)+(HORA_INICIO)THEN

(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
(SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)
ELSE
pFECHA END) + (HORA_INICIO)
ELSE

CASE WHEN TIPO =2 THEN RANGO1
WHEN TIPO=1 THEN (CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
(SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)
ELSE
pFECHA END) + (HORA_INICIO)
ELSE
RANGO1
END
END

END)INTO OpFECHA
FROM TMP_vTABLA_ACTIVIDADESHORARIO D WHERE D.ID=J AND D.ID_TABLA=PIDTABLA;


ESTOY MIGRANDO UN PROCEDIMEINTO QUE ESTA EN SQL A ORACLE PERO TENGO ESTE ERORR ORA-00905 NO SE EN Q ME ESTOY EQUIVOCANDO SALUDOS

por rafael carrillo roque | 12/12/2013 16:14:45

RE: ORA-00905

Código SQL
--------------------------------------------------------------------------------
SET @HORA_INI = (SELECT CAST((CASE WHEN LEFT(HORA_INICIO,1) = '+' THEN
DATEADD(MINUTE,DATEPART (MINUTE,CONVERT ( TIME, SUBSTRING(HORA_INICIO,2,5))),
CASE TIPO WHEN 2 THEN @RANGO2
WHEN 1 THEN @RANGO1
ELSE
@RANGO1 END)

ELSE
CASE WHEN @RANGO1 < = CAST( CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
DATEADD(DAY,1,@FECHA)
ELSE
@FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME) THEN

CAST(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
DATEADD(DAY,1,@FECHA)
ELSE
@FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME)

ELSE
CASE WHEN TIPO = 2 THEN @RANGO1

WHEN TIPO = 1 THEN CAST(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
DATEADD(DAY,1,@FECHA)
ELSE
@FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME)

ELSE @RANGO1

END
END
END)AS DATETIME)
FROM @vTABLA_ACTIVIDADESHORARIO WHERE ID = @J
)


CODIGO ORACLE
_-------------------------------------------------------------------------

SELECT(CASE WHEN OHORA_INICIO = '+' THEN
(SELECT SUBSTR(TO_CHAR(A.HORA_INICIO),4,2)+1
FROM TMP_vTABLA_ACTIVIDADESHORARIO A
WHERE A.ID_TABLA=pIDTABLA AND
ROWNUM=1),
CASE D.TIPO WHEN 2 THEN RANGO2 WHEN 1 THEN RANGO1

ELSE RANGO1 END

ELSE
CASE WHEN RANGO1 <=(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
(SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)

ELSE pFECHA END)+(HORA_INICIO)THEN

(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
(SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)
ELSE
pFECHA END) + (HORA_INICIO)
ELSE

CASE WHEN TIPO =2 THEN RANGO1
WHEN TIPO=1 THEN (CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
(SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)
ELSE
pFECHA END) + (HORA_INICIO)
ELSE
RANGO1
END
END

END)INTO OpFECHA
FROM TMP_vTABLA_ACTIVIDADESHORARIO D WHERE D.ID=J AND D.ID_TABLA=PIDTABLA;


ESTOY MIGRANDO UN PROCEDIMEINTO QUE ESTA EN SQL A ORACLE PERO TENGO ESTE ERORR ORA-00905 NO SE EN Q ME ESTOY EQUIVOCANDO SALUDOS

por rafael carrillo roque | 12/12/2013 16:29:57

RE: ORA-00905

Código SQL
--------------------------------------------------------------------------------
SET @HORA_INI = (SELECT CAST((CASE WHEN LEFT(HORA_INICIO,1) = '+' THEN
DATEADD(MINUTE,DATEPART (MINUTE,CONVERT ( TIME, SUBSTRING(HORA_INICIO,2,5))),
CASE TIPO WHEN 2 THEN @RANGO2
WHEN 1 THEN @RANGO1
ELSE
@RANGO1 END)

ELSE
CASE WHEN @RANGO1 < = CAST( CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
DATEADD(DAY,1,@FECHA)
ELSE
@FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME) THEN

CAST(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
DATEADD(DAY,1,@FECHA)
ELSE
@FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME)

ELSE
CASE WHEN TIPO = 2 THEN @RANGO1

WHEN TIPO = 1 THEN CAST(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
DATEADD(DAY,1,@FECHA)
ELSE
@FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME)

ELSE @RANGO1

END
END
END)AS DATETIME)
FROM @vTABLA_ACTIVIDADESHORARIO WHERE ID = @J
)


CODIGO ORACLE
_-------------------------------------------------------------------------

SELECT(CASE WHEN OHORA_INICIO = '+' THEN
(SELECT SUBSTR(TO_CHAR(A.HORA_INICIO),4,2)+1
FROM TMP_vTABLA_ACTIVIDADESHORARIO A
WHERE A.ID_TABLA=pIDTABLA AND
ROWNUM=1),
CASE D.TIPO WHEN 2 THEN RANGO2 WHEN 1 THEN RANGO1

ELSE RANGO1 END

ELSE
CASE WHEN RANGO1 <=(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
(SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)

ELSE pFECHA END)+(HORA_INICIO)THEN

(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
(SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)
ELSE
pFECHA END) + (HORA_INICIO)
ELSE

CASE WHEN TIPO =2 THEN RANGO1
WHEN TIPO=1 THEN (CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
(SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)
ELSE
pFECHA END) + (HORA_INICIO)
ELSE
RANGO1
END
END

END)INTO OpFECHA
FROM TMP_vTABLA_ACTIVIDADESHORARIO D WHERE D.ID=J AND D.ID_TABLA=PIDTABLA;


ESTOY MIGRANDO UN PROCEDIMEINTO QUE ESTA EN SQL A ORACLE PERO TENGO ESTE ERORR ORA-00905 NO SE EN Q ME ESTOY EQUIVOCANDO SALUDOS

por rafael carrillo roque | 12/12/2013 16:41:44

RE: ORA-00905

Código SQL
--------------------------------------------------------------------------------
SET @HORA_INI = (SELECT CAST((CASE WHEN LEFT(HORA_INICIO,1) = '+' THEN
DATEADD(MINUTE,DATEPART (MINUTE,CONVERT ( TIME, SUBSTRING(HORA_INICIO,2,5))),
CASE TIPO WHEN 2 THEN @RANGO2
WHEN 1 THEN @RANGO1
ELSE
@RANGO1 END)

ELSE
CASE WHEN @RANGO1 < = CAST( CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
DATEADD(DAY,1,@FECHA)
ELSE
@FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME) THEN

CAST(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
DATEADD(DAY,1,@FECHA)
ELSE
@FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME)

ELSE
CASE WHEN TIPO = 2 THEN @RANGO1

WHEN TIPO = 1 THEN CAST(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
DATEADD(DAY,1,@FECHA)
ELSE
@FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME)

ELSE @RANGO1

END
END
END)AS DATETIME)
FROM @vTABLA_ACTIVIDADESHORARIO WHERE ID = @J
)


CODIGO ORACLE
_-------------------------------------------------------------------------

SELECT(CASE WHEN OHORA_INICIO = '+' THEN
(SELECT SUBSTR(TO_CHAR(A.HORA_INICIO),4,2)+1
FROM TMP_vTABLA_ACTIVIDADESHORARIO A
WHERE A.ID_TABLA=pIDTABLA AND
ROWNUM=1),
CASE D.TIPO WHEN 2 THEN RANGO2 WHEN 1 THEN RANGO1

ELSE RANGO1 END

ELSE
CASE WHEN RANGO1 <=(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
(SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)

ELSE pFECHA END)+(HORA_INICIO)THEN

(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
(SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)
ELSE
pFECHA END) + (HORA_INICIO)
ELSE

CASE WHEN TIPO =2 THEN RANGO1
WHEN TIPO=1 THEN (CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
(SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)
ELSE
pFECHA END) + (HORA_INICIO)
ELSE
RANGO1
END
END

END)INTO OpFECHA
FROM TMP_vTABLA_ACTIVIDADESHORARIO D WHERE D.ID=J AND D.ID_TABLA=PIDTABLA;


ESTOY MIGRANDO UN PROCEDIMEINTO QUE ESTA EN SQL A ORACLE PERO TENGO ESTE ERORR ORA-00905 NO SE EN Q ME ESTOY EQUIVOCANDO SALUDOS

por ?????????? ????? | 18/10/2015 05:49:51

RE: ORA-00905

create table jlcbooks
(
bid char(4)primary key,
bname varchar(20),
author varchar(20),
publication varchar(20),
cost double,
edition int
);

por ?????????? ????? | 18/10/2015 05:50:11

RE: ORA-00905

create table jlcbooks
(
bid char(4)primary key,
bname varchar(20),
author varchar(20),
publication varchar(20),
cost double,
edition int
);