Opérande type de conflit: uniqueidentifier est incompatible avec int
Lorsque je tente de créer la procédure stockée ci-dessous, j'obtiens l'erreur suivante:
Opérande type de conflit: uniqueidentifier est incompatible avec int
Il n'est pas clair pour moi ce qui est à l'origine de cette erreur. UserID est en fait un int dans toutes mes tables. Quelqu'un peut-il me dire ce que j'ai fait de mal?
create procedure dbo.DeleteUser(@UserID int)
as
delete from [aspnet_Membership] where UserId = @UserID
delete from [Subscription] where UserID = @UserID
delete from [Address] where UserID = @UserID
delete from [User] where UserID = @UserID
go
Assez sûr
aspnet_Membership
n'utilisez guids
?OriginalL'auteur hughesdan | 2011-09-12
Vous devez vous connecter pour publier un commentaire.
Me semble que au moins l'une de ces tables a défini
UserID
comme ununiqueidentifier
, pas unint
. Avez-vous vérifier les données de chaque table? Ce n'SELECT TOP 1 UserID FROM
chaque table de rendement? Unint
ou unGUID
?MODIFIER
Je pense que vous avez construit une procédure basée sur toutes les tables qui contiennent une colonne nommée UserID. Je pense que vous ne devriez pas avoir inclus le
aspnet_Membership
table dans votre script, car il n'est pas vraiment un de "vos" tableaux.Si vous destiné à la conception de vos tables autour de la
aspnet_Membership
base de données, pourquoi, alors, le reste des colonnesint
lorsque cette table clairement utilise ununiqueidentifier
pour laUserID
de la colonne?Ah oui...c'était bien ça. Les membres de la table est stockée comme un guid. Embarrassant.
Si vous allez vous mélanger votre propre définition du nom d'utilisateur avec le fournisseur d'appartenances, peut-être qu'il peut faire sens pour le nom de votre identifiant de quelque chose d'autre que le nom d'utilisateur.
En effet. Mauvaise décision de ma part.
OriginalL'auteur
Si vous avez accès par l'intermédiaire d'une Vue, puis essayez de
sp_recompile
ou l'actualisation de vues.sp_recompile
:Causes des procédures stockées, des déclencheurs et des fonctions définies par l'utilisateur pour être recompilé la prochaine fois qu'ils sont exécutés. Il le fait par la chute du régime en place à partir du cache de procédure de forçage d'un nouveau plan créé la prochaine fois que la procédure ou le déclencheur est activé. Dans un générateur de profils SQL Server collecte, l'événement SP:CacheInsert est connecté à la place de l'événement SP:Recompiler.
Arguments
Qualifiés ou non qualifiés nom d'une procédure stockée, un déclencheur, une table, une vue ou une fonction définie par l'utilisateur dans la base de données actuelle. l'objet est de type nvarchar(776), sans valeur par défaut. Si l'objet est le nom d'une procédure stockée, un déclencheur ou une fonction définie par l'utilisateur, la procédure stockée, le déclencheur ou la fonction sera recompilé la prochaine fois qu'il est exécuté. Si l'objet est le nom d'une table ou d'une vue, toutes les procédures stockées, les déclencheurs, ou des fonctions définies par l'utilisateur de référence de la table ou de la vue sera recompilé la prochaine fois qu'ils sont exécutés.
Valeurs De Code De Retour
0 (succès) ou un nombre différent de zéro (de l'échec)
Remarques
sp_recompile
à la recherche d'un objet dans la base de données uniquement.Les requêtes utilisées par des procédures stockées ou des déclencheurs et des fonctions définies par l'utilisateur sont optimisés uniquement lorsqu'ils sont compilés. À titre d'indices ou d'autres changements qui affectent les statistiques sont à la base de données, compilées des procédures stockées, des déclencheurs et des fonctions définies par l'utilisateur peuvent perdre en efficacité. En recompilant les procédures stockées et les déclencheurs qui agissent sur une table, vous pouvez reoptimize les requêtes.
OriginalL'auteur