Problemas con tipo de datos

Caballero espero que me pueda dar la mano con esta duda.
Declare
@fechad char(10),
@reten TABLE ( fecha datetime,
retencion int,
factura int,
proveedor char(150),
ruc char(13),
subtotal numeric(10,2),
iva numeric(10,2),
fuente1 numeric(10,2),
fuente5 numeric(10,2),
fuente8 numeric(10,2),
iva30 numeric(10,2))
insert into @reten SELECT fecha, numero, numero_doc, 'proveedor' AS Expr1, 'ruc' AS Expr2, 0 AS Expr3, 0 AS Expr4, 0 AS Expr5, 0 AS Expr6, 0 AS Expr7, 0 AS Expr8
FROM retencion
select * from @reten
Todo esto me funcionaba muy antes de que pusiera en @fechad char(10) que necesito para hacer filtrados en la tabla retención

1 respuesta

Respuesta
1
De la forma en la que trabajas no se declara una tabla temporal, por eso es que te marca los problemas o los errores. Sugiero que lo hagas como sigue:
Declare
@fechad char(10)
insert into #reten SELECT fecha, numero, numero_doc, 'proveedor' AS Expr1, 'ruc' AS Expr2, 0 AS Expr3, 0 AS Expr4, 0 AS Expr5, 0 AS Expr6, 0 AS Expr7, 0 AS Expr8
FROM retencion
select * from #reten
Las tablas temporales te sirven en la sesión de trabajo que tengas.
Intente ejecutar la instrucción que me diste en el Analizador de Consultas y me dio el siguiente error.
Servidor: mensaje 208, nivel 16, estado 1, línea 4
El nombre de objeto '#reten' no es válido.
declare @fechad char(10) ,
@fechah char(10)
declare @reten TABLE ( fecha datetime,
retencion int,
tipo char(2),
factura int,
proveedor char(150),
ruc char(13),
subtotal numeric(10,2),
iva numeric(10,2),
fuente1 numeric(10,2),
fuente5 numeric(10,2),
fuente8 numeric(10,2),
iva30 numeric(10,2),
pago int,
cliente char(15) )
set @fechad = '2005/20/12'
set @fechah = '2005/21/12'
insert into @reten SELECT fecha, numero,tipo_doc, numero_doc, 'proveedor' AS Expr1, 'ruc' AS Expr2, 0 AS Expr3, 0 AS Expr4, 0 AS Expr5, 0 AS Expr6, 0 AS Expr7, 0 AS Expr8,comprobante,''
FROM retencion where fecha between @fechad and @fechah
update @reten set cliente = (SELECT proveedor FROM codocume WHERE (tipo = 'pp') AND (numero = @reten.pago)) where retencion @reten.pago = codocume
select * from @reten
Esto me estaba funcionado muy bien hasta que intente hacer el update
Servidor: mensaje 137, nivel 15, estado 2, línea 24
Debe declarar la variable '@reten'.
Sinceramente se esta haciendo medio complejo todo esto tienes algún tutorial que te vaya introducción a los procedure
Tu problema radica en el manejo de las tablas temporales, checa los libros de ayuda de sql server, en ellos encuentras la forma de trabajo con las tablas temporales.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas