2014-04-21 11 views
1
Create MySchema.MySpName 
As 
Begin 
    Select * from MyTable 
End 

Comme vous pouvez le voir ci-dessus il existe une procédure stockée dans le schéma MySchema, je souhaite utiliser ce schéma dynamiquement. Comme j'ai beaucoup de bases de données avec différents schémas comme MySchema1, MySchema2. Supposons que je veux exécuter ma procédure stockée ci-dessus dans le schéma MySchema1 donc je veux que ma procédure stockée sera créée avec le schéma MySchema1.MySpNameComment créer une procédure stockée avec un schéma dynamique

Toutes les suggestions.

Répondre

1

Il n'y a aucun moyen de créer une procédure sans spécifier le schéma et d'ailleurs tout objet créé dans SQL Server est lié schéma ceci est une contrainte de sécurité SQL Server mis en œuvre dans SQL Server 2005.

Tous les objets SQL Server doit être sous un schéma spécifique. Maintenant, dans votre cas, vous avez deux options.

  1. Créez cette procédure dans tous les schémas de votre base de données.

  2. Créez une procédure dans un schéma et, dans la procédure, acceptez le nom de l'objet et le nom du schéma.

Exemple

CREATE PROCEDURE dbo.Proc_Name 
@SchemaName NVARCHAR(128), 
@TableName NVARCHAR(128) 
AS 
BEGIN 
SET NOCOUNT ON; 

    DECLARE @Sql NVARCHAR(MAX); 

    SET @Sql = N' SELECT * FROM ' + QUOTENAME(@SchemaName) 
      + N'.' + QUOTENAME(@TableName) 

    EXECUTE sp_executesql @Sql 

END 

maintenant cette procédure vivre sous le schéma par défaut, mais vous pouvez passer le nom de schéma et nom de l'objet au moment de l'exécution d'appeler des objets de différents schémas.

Questions connexes