Foros aprenderaprogramar.com
Aprender a programar => De todo un poco... => Mensaje iniciado por: Eva en 10 de Julio 2013, 00:04
-
Tengo el siguiente fragmento de consulta dentro de un Procedimiento:
BEGIN
INSERT INTO FORMATOINICIAL(NOMBRETABLA,OBJECTID,NOMBRECOL,FECALTER,IDSEED,TIPOIDENTITY,VALORDEFAULT)
SELECT ISC.TABLE_NAME,
ST.object_id,
ISC.COLUMN_NAME,
ST.modify_date,
ISC.IS_NULLABLE,
sic.seed_value,
sic.is_identity,
ISC.COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS AS ISC
INNER JOIN sys.tables AS ST ON ISC.TABLE_NAME=ST.name
left join sys.identity_columns sic on ST.object_id = sic.object_id
WHERE ISC.TABLE_SCHEMA = @esquema AND ISC.TABLE_NAME=@nombretabla
END
Pero me genera un error:
"No se permite la conversión implícita del tipo de datos sql_variant a int. Utilice la función CONVERT para ejecutar esta consulta."cuando lo ejecuto.. ¿Alguien sabe donde deberia incluir el CONVERT? Probe de varias formas y no logro solucionarlo
-
Habría que mirar:
¿Qué formato tienen estos campos de FORMATOINICIAL:
NOMBRETABLA
OBJECTID
NOMBRECOL
FECALTER
IDSEED
TIPOIDENTITY
VALORDEFAULT
?
¿Qué formato tienen estos de las otras dos tablas:
ISC.TABLE_NAME
ST.object_id
ISC.COLUMN_NAME
ST.modify_date
ISC.IS_NULLABLE
sic.seed_value
sic.is_identity
ISC.COLUMN_DEFAULT
?
¿Si ejecutas esta consulta:
SELECT ISC.TABLE_NAME,
ST.object_id,
ISC.COLUMN_NAME,
ST.modify_date,
ISC.IS_NULLABLE,
sic.seed_value,
sic.is_identity,
ISC.COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS AS ISC
INNER JOIN sys.tables AS ST ON ISC.TABLE_NAME=ST.name
left join sys.identity_columns sic on ST.object_id = sic.object_id
WHERE ISC.TABLE_SCHEMA = @esquema AND ISC.TABLE_NAME=@nombretabla
obtienes el resultado esperado?
Otra opción sería pensar en una copia de tablas y modificación del tipo de datos, pero esto solo lo pensaría si estuvieras hablando de pocos datos (cien ó mil) si estás con miles de datos no lo veo razonable.