Non valide le type de données lors de l'utilisation type de table défini par l'utilisateur
Je suis nouveau paramètre table dans SQL Server 2008. J'ai essayé de faire table défini par l'utilisateur à l'aide de requêtes
USE [DB_user]
GO
CREATE TYPE [dbo].[ApproveAddsIds] AS TABLE(
[Ids] [bigint] NULL
)
GO
Quand j'ai essayé d'utiliser le type de table dans une procédure stockée
USE [DB_user]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create PROCEDURE [dbo].[GetTopTopic]
@dt [dbo].[ApproveAddsIds] READONLY
AS
BEGIN
END
J'ai deux errors_
@dt a une défaillance de type de données
Le paramètre @dt ne peut pas être déclaré en lecture seule car il n'est pas de paramètre table.
J'ai donc essayé de comprendre la raison derrière cela comme première requête est exécutée avec succès, j'ai pensé que sa raison d'autorisations et a tenté
GRANT EXEC ON TYPE::[schema].[typename] TO [User]
GO
Mais l'erreur continue ne sais pas quoi de mal avec cela.
Quelque chose de bizarre, j'ai remarqué que maintenant, quand j'ai mis ,
après @dt [dbo].[ApproveAddsIds] READONLY
au-dessus d'erreur supprimé et maintenant l'erreur est sur AS
Disant attendre les variables. Quand j'écris du code pour les variables d'erreur vieille de suite. Je pense que ça pourrait aider.
- vous sûr que vous avez créé le type de table:
CREATE TYPE ... AS TABLE ...
? En gros, le message d'erreur indique qu'il n'est pas [dbo].[ApproveAddsIds]
type de table.Je suis sur le même serveur/ base de données n ont essayé d'impression salut dans le corps, mais l'erreur de poursuite.
je le pense aussi, mais le type de table est créée avec succès.
Si vous vérifiez votre base de données dans SQL Server Management Studio, de l'Explorateur d'Objets, aller à la
Programmability > Types > User-Defined Table Types
- voyez-vous votre ApproveAddsIds
type de table?
OriginalL'auteur Hot Cool Stud | 2014-01-02
Vous devez vous connecter pour publier un commentaire.
J'ai eu exactement ce problème qui m'arrive.
J'ai simplement fait sûr que je l'avais sauvé tout ce que je nécessaire dans SQL Server et redémarré le Serveur SQL server Management Studio.
Une fois redémarré, les erreurs n'apparaissait plus. Je suis l'aide de SQL Server 2012, mais je ne vois pas pourquoi cela ne devrait pas également travailler avec 2008.
OriginalL'auteur Anya Hope
J'ai eu ce même problème après la création d'un nouvel utilisateur-type de table défini par (UDTT) dans une fenêtre de requête, puis en essayant de créer une procédure stockée dans un autre. Selon une autre réponse à cette question, je l'ai résolu par le redémarrage de SQL Server Management Studio. Cependant, il m'a ennuyé que j'ai dû redémarrer l'application que j'ai eu beaucoup de travail ouvert/en cours.
Dans mon cas, j'avais remarqué que IntelliSense dans SSMS a souligné que le nom de mon UDTT avec un rouge ligne sinueuse. J'ai trouvé les conseils suivants...
... sur la page web suivante ...
https://www.mssqltips.com/sqlservertip/2591/troubleshooting-intellisense-in-sql-server-management-studio-2012/
L'avis est fait l'écho sur MSDN, avec un peu de conseils ici:
https://msdn.microsoft.com/en-us/library/ms173434.aspx
Je ne peux pas être sûr que l'actualisation de l'IntelliSense cache aurait un effet sur les erreurs jeté alors qu'en réalité, en essayant de créer la Procédure Stockée, mais depuis le redémarrage de SMS résolu le problème avec aucune autre modification au script, un problème de mise en cache une bonne sur la droite.
défini par l'utilisateur-type sqlservermanagementstudio intellisense
OriginalL'auteur Charlie Joynt
Le même code fonctionne pour moi aussi. Mais il n'y a pas de déclarations entre
BEGIN
etEND
.Essayez par l'ajout de certains états, comme ceJe ne vois aucune erreur de syntaxe du code.Est-il une requête au sein de début et de fin de déclaration ?.
Le code ci-dessus devrait fonctionner... Ce problème que vous rencontrez...descriptif
quand j'ai essayé le code ci-dessus, je fais face à l'erreur dt a un invalide Paramètre de type de données ,dt ne peut pas être déclaré en lecture seule car il n'est pas de paramètre table.
OriginalL'auteur Radhamani Muthusamy
J'ai été confronté au même problème. Il était en effet liée à l'IntelliSense. Voici les étapes que j'ai effectuées pour le résoudre. Je suis l'aide de SQL Management Studio 2017.
1) Dans la fenêtre Éditeur de Code pour la Procédure Stockée, cliquez à droite.
2) à Partir du raccourci de menu, sélectionnez "IntelliSense Activé"
Après que l'éditeur de code ne montrent aucune erreur. Espérons que cette aide.
OriginalL'auteur KurioZ7