none
@@ delante del identificador de algunas funciones del sistema RRS feed

  • Pregunta

  • Hola

    Me gustaría saber porque algunas funciones del sistema tienen @@ delante del identificador y otras no.

    ¿Hay alguna diferencia entre ellas?

    Gracias

    sábado, 26 de noviembre de 2016 18:17

Respuestas

  • Hola Willams.

    Entiendo lo de NILADIC; sin embargo, mi entendimiento es que dichas funciones con @@, que incluso antes se conocían como variables del sistema, tienen esa doble arroba para diferenciarlas de variables que tienen una sola @.

    Es decir, y de pronto estoy equivocado, se que hay funciones que sin parámetros retornan un valor, como se aprecia en SELECT @@VERSION o en USER. Sin embargo, @@VERSION puede entenderse como una variable del sistema, a diferencia de USER que es una función de sistema.

    Saludos,


    Guillermo Taylor F.
    MVP Data Platform & IT Pro
    Mi Blog

    domingo, 27 de noviembre de 2016 17:34

Todas las respuestas

  • Hola.

    Entiendo que para que se comporten como variables del sistema. Es decir, para que puedas usarlas como en SELECT @@VERSION o incluso como @@PROCID o @@ROWCOUNT.

    Como para definir una variable usas @, el sistema usa @@ con ciertas funciones para que, siendo funciones del sistema, de nuevo, se puedan usar como variables.

    Saludos,


    Guillermo Taylor F.
    MVP Data Platform & IT Pro
    Mi Blog

    domingo, 27 de noviembre de 2016 16:53
  • Estimado Guillermo,

    Estuve revisando documentación al respecto y no encontré nada claro, respecto a tu respuesta te refieres a que dichas funciones (cuyo prefijo es @@) ¿puedan ser utilizadas sin pasar un valor como argumento?. Entendiendo que son funciones se debería pasar un valor como argumento pero en algunos casos no es requerido, a esas funciones se les llama Niladic (no tengo la traducción exacta al español). De ser así no creo que sea el caso porque hay algunas funciones Niladic que no tienen como prefijo el doble caracter de arroba, como por ejemplo: SELECT USER (función Niladic de sistema).

    Quedo atento a tus comentarios.

    domingo, 27 de noviembre de 2016 17:19
  • Hola Willams.

    Entiendo lo de NILADIC; sin embargo, mi entendimiento es que dichas funciones con @@, que incluso antes se conocían como variables del sistema, tienen esa doble arroba para diferenciarlas de variables que tienen una sola @.

    Es decir, y de pronto estoy equivocado, se que hay funciones que sin parámetros retornan un valor, como se aprecia en SELECT @@VERSION o en USER. Sin embargo, @@VERSION puede entenderse como una variable del sistema, a diferencia de USER que es una función de sistema.

    Saludos,


    Guillermo Taylor F.
    MVP Data Platform & IT Pro
    Mi Blog

    domingo, 27 de noviembre de 2016 17:34
  • Estimado Guillermo,

    Entiendo, encontré un enlace donde hablan de las "variables globales" que precisamente son las funciones que tienen como prefijo '@@' Global Variables in SQL Server y que tú haces mención, sin embargo dudaba de ello porque leí en algún momento (ando buscando la referencia) que el concepto de "variables globales" en SQL Server no existe. Si logro encontrarlo lo adjunto para aclarar el concepto.

    domingo, 27 de noviembre de 2016 21:56