117 - Tipo de dato text - ntext e image (actualizar)


Primer problema:
Un maestro almacena los datos de sus alumnos en una tabla denominada "alumnos", incluye el 
documento, el nombre, la nota y un comentario acerca del comportamiento de cada uno de ellos.
1- Elimine la tabla si existe:
 if object_id('alumnos') is not null
  drop table alumnos;

2- Créela con la siguiente estructura:
 create table alumnos (
  documento char(8),
  nombre varchar(30),
  nota decimal(4,2),
  concepto text,
  constraint PK_alumnos
  primary key(documento)
 );

3- Ingrese algunos registros:
 insert into alumnos values ('22222222','Ana Acosta',3,'Participativo. Generoso');
 insert into alumnos values ('23333333','Carlos Caseres',7,'Poco participativo');
 insert into alumnos values ('24444444','Diego Duarte',8,'Buen compañero');
 insert into alumnos values ('25555555','Fabiola Fuentes',2,null);

4- Recupere todos los registros:
 select *from alumnos;

5- Inserte en el concepto del alumno con documento "23333333" el texto "comunicativo", en la 
posición 5, borrando todos los caracteres siguientes. Verifique que el puntero sea válido, en caso 
de no serlo, muestre un mensaje de error.

6- Lea el campo "concepto" actualizado anteriormente para verificar que se actualizó.

7- Intente actualizar el concepto del alumno con documento "25555555" el texto "Muy comunicativo". 
Verifique que el puntero sea válido, en caso de no serlo, muestre un mensaje de error.
Puntero inválido.

8- Intente agregar texto al campo "concepto" del alumno con documento "24444444" en la posición 20.
Mensaje de error porque el texto tiene una longitud menor.

9- Inserte en el concepto del alumno con documento "24444444" el texto "alumno y", en la posición 5, 
sin borrar ningún caracter. Verifique que el puntero sea válido antes de pasar el puntero a la 
función "updatetext".

10- Lea el campo "concepto" actualizado anteriormente para verificar que se actualizó.

11- Elimine la tabla "reprobados" si existe:
 if object_id('reprobados') is not null
  drop table reprobados;

12- Cree la tabla "reprobados" que contenga 2 campos: documento y concepto:
 create table reprobados(
  documento char(8) not null,
  concepto text
 );

13- Ingrese los siguientes registros en "reprobados" (en el campo "concepto" ingresamos cadenas 
vacías para que se creen punteros válidos):
 insert into reprobados values('22222222','');
 insert into reprobados values('25555555','');

14- Actualice el "concepto" del alumno "22222222" de la tabla "reprobados" con el concepto de dicho 
alumno de la tabla "alumnos". Verifique que los punteros sean válidos.

15- Verifique la actualización.

16- Intente actualizar el "concepto" del alumno "25555555" de la tabla "reprobados" con el concepto 
de dicho alumno de la tabla "alumnos". Verifique que los punteros sean válidos.
Mensaje de error porque hay un puntero inválido, el de la tabla "alumnos", porque el registro 
consultado contiene "null" en "concepto".

17- Intente actualizar el "concepto" del alumno "23333333" de la tabla "reprobados" con el concepto 
de dicho alumno de la tabla "alumnos". Verifique que los punteros sean válidos.
Mensaje de error porque hay un puntero inválido, el de "reprobados", no existe el registro 
consultado.
Ver solución

 if object_id('alumnos') is not null
  drop table alumnos;

 create table alumnos (
  documento char(8),
  nombre varchar(30),
  nota decimal(4,2),
  concepto text,
  constraint PK_alumnos
  primary key(documento)
 );

 insert into alumnos values ('22222222','Ana Acosta',3,'Participativo. Generoso');
 insert into alumnos values ('23333333','Carlos Caseres',7,'Poco participativo');
 insert into alumnos values ('24444444','Diego Duarte',8,'Buen compañero');
 insert into alumnos values ('25555555','Fabiola Fuentes',2,null);

 select *from alumnos;

 declare @puntero binary(16)
 select @puntero = textptr (concepto)
  from alumnos
  where documento='23333333'
  if (textvalid('alumnos.concepto',@puntero)=1)
   updatetext alumnos.concepto @puntero 5 null 'comunicativo'
  else
   select 'Puntero inválido';

 declare @puntero binary(16)
 select @puntero = textptr (concepto)
  from alumnos
  where documento='23333333'
 
 readtext alumnos.concepto @puntero 0 0;

 declare @puntero binary(16)
 select @puntero = textptr (concepto)
  from alumnos
  where documento='25555555'
  if (textvalid('alumnos.concepto',@puntero)=1)
   updatetext alumnos.concepto @puntero 0 0 'Muy comunicativo'
  else
   select 'Puntero inválido';

 declare @puntero binary(16)
 select @puntero = textptr (concepto)
  from alumnos
  where documento='24444444'
 updatetext alumnos.concepto @puntero 20 0 ' y estudioso';

 declare @puntero binary(16)
 select @puntero = textptr (concepto)
  from alumnos
  where documento='24444444'
  if (textvalid('alumnos.concepto',@puntero)=1)
   updatetext alumnos.concepto @puntero 5 0 'alumno y '
  else  select 'Puntero inválido';

 declare @puntero binary(16)
 select @puntero = textptr (concepto)
  from alumnos
  where documento='24444444'
 
 readtext alumnos.concepto @puntero 0 0;

 if object_id('reprobados') is not null
  drop table reprobados;

 create table reprobados(
  documento char(8) not null,
  concepto text
 );

 insert into reprobados values('22222222','');
 insert into reprobados values('25555555','');

 declare @puntero1 binary(16)
 select @puntero1 = textptr(concepto)
  from alumnos
  where documento='22222222'

 declare @puntero2 binary(16)
 select @puntero2 = textptr(concepto)
  from reprobados
  where documento='22222222'

  if (textvalid('alumnos.concepto',@puntero1)=1) 
    if (textvalid('reprobados.concepto',@puntero2)=1)
      updatetext reprobados.concepto @puntero2 0 null alumnos.concepto @puntero1
    else select 'Puntero a la tabla reprobados inválido'
  else select 'Puntero a la tabla alumnos inválido';

 declare @puntero binary(16)
 select @puntero = textptr(concepto)
  from reprobados
  where documento='22222222'
 readtext reprobados.concepto @puntero 0 0;

 declare @puntero1 binary(16)
 select @puntero1 = textptr(concepto)
  from alumnos
  where documento='25555555'

 declare @puntero2 binary(16)
 select @puntero2 = textptr(concepto)
  from reprobados
  where documento='25555555'

  if (textvalid('alumnos.concepto',@puntero1)=1) 
    if (textvalid('reprobados.concepto',@puntero2)=1)
      updatetext reprobados.concepto @puntero2 0 null alumnos.concepto @puntero1
    else select 'Puntero de "reprobados" inválido'
  else select 'Puntero de "alumnos" inválido';

 declare @puntero1 binary(16)
 select @puntero1 = textptr(concepto)
  from alumnos
  where documento='23333333'

 declare @puntero2 binary(16)
 select @puntero2 = textptr(concepto)
  from reprobados
  where documento='23333333'

  if (textvalid('alumnos.concepto',@puntero1)=1) 
    if (textvalid('reprobados.concepto',@puntero2)=1)
      updatetext reprobados.concepto @puntero2 0 null
      alumnos.concepto @puntero1
    else select 'Puntero de "reprobados" inválido'
  else select 'Puntero de "alumnos" inválido';



 

Retornar