IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

UDF table temporaire


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 74
    Points
    74
    Par défaut UDF table temporaire
    Bonjour
    Je suis sous SQL server 2005
    la recherche sur l'objet ne donne rien donc pourquoi je n'arrive à saisir dans une procedure stockée un type utilsateur sur une table temporaire alors que si j'essaie sur un create table sur une table normale cet udf est accepté, soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    REATE TABLE [dbo].[T_DEVPART2_DPT](
    	[DPT_ID] [bigint] NOT NULL,
    	[DEV_ID] [bigint] NULL,
    	[DPT_PID] [bigint] NULL,
    	[DPT_ORD] [int] NULL,
    	[DPT_STYPE] [dbo].[D_SOUS_TYP_ELEMENT] NULL CONSTRAINT [DF_T_DEVPART_DPT_DPT_STYPE]  DEFAULT ((1)),
    	[DPT_IMPR] [bit] NULL,
    	[DPT_FAMILLE] [dbo].[D_FAMILLE_ARTICLE] NULL,
    	[DPT_SFAMILLE] [dbo].[D_FAMILLE_ARTICLE] NULL,
     CONSTRAINT [PK_T_DEVPART2_DPT] PRIMARY KEY CLUSTERED 
    (
    	[DPT_ID] ASC
    )WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]
     
     
    CREATE TABLE dbo.#DevisPartTmp(
    		ID BIGINT PRIMARY KEY,
    		PID BIGINT,
    		STYPE INT,
    		FAMILLE dbo.D_FAMILLE_ARTICLE,
    		SFAMILLE dbo.D_FAMILLE_ARTICLE
    )
    j'ai le message "type de données dbo.D_FAMILLE_ARTICLE introuvable"
    alors qu'i passe sur la premiere table
    Bruno Petit

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 74
    Points
    74
    Par défaut
    je voulais dire UDT user defined type en fait , vous aurez corrigé de vous même je pense
    Bruno Petit

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 74
    Points
    74
    Par défaut
    en fait c'est même User Defined Data Type
    Bruno Petit

  4. #4
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 74
    Points
    74
    Par défaut
    C'est pas sympa les gars de ne pas me dire qu'il suffit de les déclarer dans la base sytem, "tempdb" (les UDDT et lmes UDF) ,dur le vendredi mais c'est la seul jour ou j'ai du temps
    dans le même genre; cela à l'air de marcher dans toute les bases system, dans quelle base est il conseillé d'enregistrer une proc une fonction ou un type global
    Bruno Petit

  5. #5
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 74
    Points
    74
    Par défaut
    en fait (encore) il faudrait mieux ne pas les enregsitrer dans tempdb mais plutot dans model ou peut être dans master
    Bruno Petit

  6. #6
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 74
    Points
    74
    Par défaut
    très interessant ce fil de discussion
    Bruno Petit

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 782
    Points : 52 783
    Points
    52 783
    Billets dans le blog
    5
    Par défaut
    les tables temporaires sont créées dna la base tempdb.
    Si tu veut faire référence à une UDF située dans une autre table, il faut utiliser un nom long : mabase.monschéma.monudf.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE dbo.#DevisPartTmp(
    		ID BIGINT PRIMARY KEY,
    		PID BIGINT,
    		STYPE INT,
    		FAMILLE mabase.dbo.D_FAMILLE_ARTICLE,
    		SFAMILLE mabase.dbo.D_FAMILLE_ARTICLE
    )
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 74
    Points
    74
    Par défaut
    Merci pour la réponse, mais j'ai toujours un peu de mal à comprendre SQL server, je comprend bien qu'il faille utiliser un nom entièrement qualifié pour accéder à une UDF, mais dans le cadre d'une colonne calculée sur une table temporaire c'est refusé
    Un nom de fonction défini par l'utilisateur ne peut pas avoir pour préfixe un nom de base de données dans ce contexte.
    ; pareil si je fait appel à un UDDT dans la création de ma table tempo. Je ne comprend pas comment cela peut me changer de contexte le fait de créer une table temporaire. Pour une variable table quelles sont les limitations, j'ai lu ici il me semble qu'on ne pouvait pas faire de jointure avec elles?
    Bruno Petit

  9. #9
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 74
    Points
    74
    Par défaut
    en fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TABLE #DevisPartTmp(
    		ID BIGINT PRIMARY KEY,
    		PID BIGINT,
    		PUA1 GPG.dbo.D_MT_MONETAIRE,
    j'obtiens
    Le nom de type 'GPG.dbo.D_MT_MONETAIRE' contient plus de préfixes que le nombre maximal autorisé. Le nombre maximal est de 1.
    Bruno Petit

  10. #10
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 74
    Points
    74
    Par défaut
    Personne n'a de réponse pour mon problème de UDF et de UDDT sur une table temporaire car si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE TABLE #DevisPartTmp(
    		ID BIGINT PRIMARY KEY,
    		PID BIGINT,
    		UNITP VARCHAR(3),
                             .....
    		PUA1 GPG.dbo.D_MT_MONETAIRE,
                              .......
    		PTA1 AS QTE * PUA1 * (1 / GPG.dbo.UFN_GET_QTE_UNITPU(UNITP)),
    		CALCF INT
    	)
    à la vérification sur l'UDDT j'ai
    Le nom de type 'GPG.dbo.D_MT_MONETAIRE' contient plus de préfixes que le nombre maximal autorisé. Le nombre maximal est de 1.
    à l'execution sur l'UDF j'ai
    Un nom de fonction défini par l'utilisateur ne peut pas avoir pour préfixe un nom de base de données dans ce contexte
    Bon je peux m'en passer mais bon c'est pénible, cette colonne stocke temporairement des données de ce type défini par moi, alors pourquoi ne pas l'utiliser dans ce contexte
    Bruno Petit

Discussions similaires

  1. Table temporaire
    Par Tapioca dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/07/2004, 11h32
  2. Table temporaire et résultat requête
    Par Royd938 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/07/2004, 14h24
  3. Suppression table temporaire...
    Par Royd938 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2004, 12h00
  4. [procédure stockée] table temporaire commençant par #???
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/04/2004, 12h23
  5. Nettoyage de table temporaire
    Par Alain Dionne dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/02/2004, 20h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo