Compartir a través de


Cómo: Crear procedimientos almacenados y funciones definidas por el usuario

Puede utilizar el Explorador de servidores para crear procedimientos almacenados. Los procedimientos almacenados pueden definir reglas de empresa complejas, controlar la modificación de datos, limitar el acceso mediante permisos de seguridad, proporcionar la integridad de transacciones y por lo general realizar el trabajo de base de datos que requiere la aplicación.

En Microsoft SQL Server 2000, y en versiones posteriores, el Explorador de servidores también puede utilizarse para crear funciones definidas por el usuario. Una función definida por el usuario es una rutina que encapsula lógica útil para utilizar en otras consultas. Aunque las vistas están limitadas a una sola instrucción SELECT, las funciones definidas por el usuario pueden tener varias instrucciones SELECT y proporcionar una lógica más eficaz de la que pueden proporcionar las vistas.

Las funciones definidas por el usuario siempre devuelven un valor. En función del tipo de valor devuelto, cada función definida por el usuario se incluye dentro de una de estas tres categorías:

  • **Función con valores escalares   **Una función definida por el usuario puede devolver un valor escalar como, por ejemplo, un valor entero o un valor de marca de tiempo. Una función que devuelve un valor escalar puede utilizarse en una consulta en cualquier sitio en el que se utilice un nombre de columna.

  • Función Inline Si una función definida por el usuario contiene una sola instrucción SELECT y esa instrucción es actualizable, entonces el resultado tabular devuelto por la función también es actualizable. Estas funciones se denominan funciones Inline. Cuando una función Inline devuelve una tabla, se puede utilizar esa función en la cláusula FROM de otra consulta. Para obtener más información, consulte Cómo: Crear consultas a partir de otro objeto distinto de una tabla.

  • Función con valores de tabla Si una función definida por el usuario contiene más de una instrucción SELECT o contiene una instrucción SELECT que no es actualizable, el resultado tabular devuelto por la función no es actualizable. Si una función con valores de tabla devuelve una tabla, se puede utilizar esa función en la cláusula FROM de otra consulta.

Nota

En los siguientes ejemplos, dbo hace referencia a propietario de base de datos (database owner) y se utiliza para calificar el nombre del procedimiento almacenado y de la función definida por el usuario. El dbo es un usuario que tiene permisos implícitos para realizar cualquier actividad en la base de datos. Cualquier objeto creado por cualquier miembro de la función sysadmin pertenece a dbo de forma automática. En los ejemplos siguientes, se incluye el calificador de nombre dbo.

Nota

Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Para cambiar la configuración, elija la opción Importar y exportar configuraciones del menú Herramientas. Para obtener más información, consulte Trabajar con valores de configuración.

Para crear un nuevo procedimiento almacenado

  1. En el Explorador de servidores, haga clic con el botón secundario del mouse en la carpeta Procedimientos almacenados o en cualquier procedimiento almacenado de esa carpeta.

  2. Elija Agregar nuevo procedimiento almacenado en el menú contextual.

    Se crea un nuevo procedimiento almacenado con el siguiente esquema de instrucciones SQL:

    CREATE PROCEDURE dbo.StoredProcedure1
    /*
       (
          @parameter1 datatype = default value,
          @parameter2 datatype OUTPUT
       )
    */
    AS
       /* SET NOCOUNT ON */
       RETURN
    
  3. Puede reemplazar StoredProcedure1 en la primera línea por el nombre del nuevo procedimiento. Por ejemplo, podría utilizar MyProcedure como nombre:

    CREATE PROCEDURE dbo.MyProcedure
    

    Nota

    Los procedimientos almacenados deben tener nombres únicos. Si elige un nombre que ya está asignado a otro procedimiento almacenado, un mensaje de error le advierte de que ya existe un procedimiento almacenado con ese nombre.

  4. Escriba el texto de procedimiento restante en SQL.

    Para obtener más información y ejemplos de procedimientos almacenados, vea la documentación del servidor de bases de datos. Si utiliza Microsoft® SQL Server™, vea "CREATE PROCEDURE" en Libros en pantalla de SQL Server.

Para crear una nueva función definida por el usuario

  1. En el Explorador de servidores, haga clic con el botón secundario del mouse en la carpeta Funciones o en cualquier función de esa carpeta.

  2. Seleccione Agregar nuevo y, a continuación, elija Función Inline, Función con valores de tabla o Función con valores escalares en el menú contextual.

    Nota

    No se puede cambiar el esquema de instrucciones SQL de una nueva función a instrucciones SQL para un tipo de función distinto y guardar los resultados. Por ejemplo, si comienza con una función Inline, no puede cambiar las instrucciones SQL a una función con valores escalares. El proceso de guardar producirá un error.

    Se crea una nueva función definida por el usuario mediante un esquema de instrucciones SQL. Por ejemplo, si se elige la opción Función con valores escalares, se mostrará el siguiente esquema de instrucciones SQL:

    CREATE FUNCTION dbo.Function1
       (
       /*
       @parameter1 datatype = default value,
       @parameter2 datatype
       */
       )
    RETURNS /* datatype */
    AS
       BEGIN
          /* sql statement ... */
       RETURN /* value */
       END
    
  3. Puede reemplazar Function1 en la primera línea por el nombre de la nueva función. Por ejemplo, podría utilizar MyFunction como nombre:

    CREATE FUNCTION dbo.MyFunction
    

    Nota

    Las funciones definidas por el usuario deben tener nombres únicos. Si se elige un nombre que ya se encuentre asignado a otra función, se mostrará un mensaje de advertencia.

  4. Escriba el texto de función restante en SQL.

Nota

Si el menú contextual no ofrece las opciones que necesita, puede que la versión de Visual Studio que está utilizando no admita esta característica. Para obtener más información, consulte Ediciones de Visual Database Tools.

Para obtener más información y ejemplos de funciones definidas por el usuario, vea la documentación del servidor de bases de datos. Si utiliza Microsoft® SQL Server™, consulte "CREATE FUNCTION" en Libros en pantalla de SQL Server.

Vea también

Conceptos

Expresiones en consultas

Otros recursos

Trabajar con procedimientos almacenados y funciones definidas por el usuario