Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Print

Estas en el tema de Print en el foro de SQL Server en Foros del Web. Hola a todos!!! Tengo una pequeña duda que les comentare ahora mismo. Tengo que crear varias funciones y triggers y procesos, entonces el problema que ...
  #1 (permalink)  
Antiguo 27/08/2012, 22:26
Avatar de calakra  
Fecha de Ingreso: septiembre-2009
Mensajes: 182
Antigüedad: 14 años, 7 meses
Puntos: 0
Print

Hola a todos!!!

Tengo una pequeña duda que les comentare ahora mismo.

Tengo que crear varias funciones y triggers y procesos, entonces el problema que tengo es que no se mostrar mensajes en un punto del proceso que me lo mande al spool para ver el valor de las variables y asi mapear el proceso, no se si me puedan ayudar con eso

ejemplo
alter FUNCTION dbo.datetochar(@fecha as date)

RETURNS varchar(20)

BEGIN

declare @mes nvarchar(20);

select @mes= (CASE MONTH(@fecha) when 1 then 'ENERO'
when 2 then 'FEBRERO'
when 3 then 'MARZO'
when 4 then 'ABRIL'
when 5 then 'MAYO'
when 6 then 'JUNIO'
when 7 then 'JULIO'
when 8 then 'AGOSTO'
when 9 then 'SEPTIEMBRE'
when 10 then 'OCTUBRE'
when 11 then 'NOVUEMBRE'
ELSE 'DICIEMBRE'END );

print @mes;

RETURN @mes;

END
go

select dbo.datetochar(convert (date ,getdate()))

quiero que cuando ejecuto la funcion en el spool mande el valor de mes, pero me sale un error, no se si exista un RAISE NOTICE para sqlserver, he visto que es RAISERROR pero no se bien como funciona por que tiene muchos parametros, pero me puedan ayudar.

Gracias
  #2 (permalink)  
Antiguo 28/08/2012, 07:59
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Print

El problema es la instrucción Print: esta prohibida dentro de una función, y sin ella funciona perfectamente.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 28/08/2012, 08:56
Avatar de calakra  
Fecha de Ingreso: septiembre-2009
Mensajes: 182
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Print

Cita:
Iniciado por GeriReshef Ver Mensaje
El problema es la instrucción Print: esta prohibida dentro de una función, y sin ella funciona perfectamente.
Hola.

Gracias por tu respuesta, de eso ya me di cuenta, pero igualmente quisiera saber como mandar mensajes al spool para saber como va el proceso del mismo, actualmente esa funcion no es muy complicada, pero si hago otra funcion o un trigger o un proceso almacenado como le hago para mapearlo?

Espero me puedas ayudar. Saludos
  #4 (permalink)  
Antiguo 28/08/2012, 09:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Print

en lugar de un print puedes usar un

select @variable que esto lo puedes usar en un trigger, function o procedure :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 28/08/2012, 09:48
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Print

La unica solución que he encontrado es utilizar el XP_CmdShell para exportar mensajes a un archivo textual (con la instrucción Echo .. > C:\MiArchivo.txt) o a una tabla (con SQLCmd).

La razon es que es imposible utilizar procedimientos almacenados dentro de una función, pero procedimientos almacenados extendidos estan permitidos.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #6 (permalink)  
Antiguo 28/08/2012, 10:00
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Print

Cita:
Iniciado por GeriReshef Ver Mensaje
La unica solución que he encontrado es utilizar el XP_CmdShell para exportar mensajes a un archivo textual (con la instrucción Echo .. > C:\MiArchivo.txt) o a una tabla (con SQLCmd).

La razon es que es imposible utilizar procedimientos almacenados dentro de una función, pero procedimientos almacenados extendidos estan permitidos.
y un select @variable no funciona??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 28/08/2012, 11:13
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Print

Libras- intente con Select @mes en lugar de Print @mes y me arroja un error.
No estoy seguro que te entendi.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #8 (permalink)  
Antiguo 28/08/2012, 11:21
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Print

sip ya vi el error :P jejejeje y calakra para probar una funcion con print o con lo que necesites....no tiene porque estar el print en el codigo de la funcion puedes hacer esto:

Código SQL:
Ver original
  1. DECLARE @mes nvarchar(20);
  2. SET @mes=CONVERT(DATE,getdate())
  3.  
  4. SELECT @mes= (CASE MONTH(@fecha) WHEN 1 THEN 'ENERO'
  5. WHEN 2 THEN 'FEBRERO'
  6. WHEN 3 THEN 'MARZO'
  7. WHEN 4 THEN 'ABRIL'
  8. WHEN 5 THEN 'MAYO'
  9. WHEN 6 THEN 'JUNIO'
  10. WHEN 7 THEN 'JULIO'
  11. WHEN 8 THEN 'AGOSTO'
  12. WHEN 9 THEN 'SEPTIEMBRE'
  13. WHEN 10 THEN 'OCTUBRE'
  14. WHEN 11 THEN 'NOVUEMBRE'
  15. ELSE 'DICIEMBRE'END );
  16.  
  17. print @mes;

y ver el funcionamiento de tu query antes de crear la funcion, una vez depurada pues haces el create y listo :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 28/08/2012, 11:24
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Print

Creo que el problema es que SELECT no se puede usar en una FUNCION, ¿cierto?
__________________
MCTS Isaias Islas
  #10 (permalink)  
Antiguo 28/08/2012, 11:25
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Print

Cita:
Iniciado por iislas Ver Mensaje
Creo que el problema es que SELECT no se puede usar en una FUNCION, ¿cierto?
cierto :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 29/08/2012, 21:31
Avatar de calakra  
Fecha de Ingreso: septiembre-2009
Mensajes: 182
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Print

Hola.

Así es, me sale error, es acaso que no se puede mandar mensajes desde una funcion?' y si estoy en un proceso almacenado como mandaria los mensajes? o ustedes como mapean una funcion?

Gracias
  #12 (permalink)  
Antiguo 30/08/2012, 02:12
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Print

Calakra:

1. En un procedimiento almacenado se puede utilizar las instrucciones Select & Print, no hay ningun problema.

2. En funciones de todos tipos es imposible utilizar las instrucciones Select & Print.

3. Yo personalmente, utilizo en funciones el procedimiento extendido XP_CmdShell y mando los mensajes a un archivo textual.
No es lo mas comodo, y si alguien conoce otra opción estara encantado de oir hablar de eso.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #13 (permalink)  
Antiguo 30/08/2012, 07:49
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Print

yo lo que hago primero "testeo" mi funcion antes de hacer el create function(mandando parametros y todo eso) y asi puedo usar print, select etc ya despues de que tengo depurado el codigo ahora si hago el create function :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 30/08/2012, 10:06
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Print

Libras, estoy de acuerdo contigo, en lo personal hago lo mismo, el cuerpo de la funcion, no es otra cosa que T-SQL, al que puede aplicarse debbug en el analizador de consultas.
__________________
MCTS Isaias Islas

Etiquetas: print, select, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:36.