2010-11-13 6 views
2

hey guys im la création d'une procédure stockée formulaire de recherche dans le im asp.net obtenir l'erreur, le code est donné ci-dessouserreur de procédure stockée "colonne ambiguë"

set ANSI_NULLS ON 
set QUOTED_IDENTIFIER ON 
go 

ALTER PROCEDURE [dbo].[sp_searchcustomervendordetails] 
@customervendortype varchar(30)=Null, 
    @customervendorid varchar(30)=Null, 
    @customervendorname varchar(30)=Null, 
    @state    varchar(30)=Null, 
    @city    varchar(30)=Null 
AS 
BEGIN 
SET NOCOUNT ON; 
--if @customervendortype is not null and len(@customervendortype)=0 set @customervendortype = null 
--if @customervendorid is not null and len(@cuatomervendorid)=0 set @customervendorid = null 
--if @customervendorname is not null and len(@customervendorname)=0 set @customervendorname = null 
--if @city is not null and len(@city)=0 set @city = null 
--if @state is not null and len(@state)=0 set @state = null 

    -- Insert statements for procedure here 
SELECT  CustomerVendorDetails.customervendorid AS CustomerVendorID,CustomerVendorAddressDetails.customervendorname, CustomerVendorAddressDetails.doorno, CustomerVendorAddressDetails.street, 
      CustomerVendorAddressDetails.city, CustomerVendorAddressDetails.state, CustomerVendorAddressDetails.country, 
      CustomerVendorAddressDetails.pincode, CustomerVendorDetails.decidingauthority, 
      CustomerVendorDetails.landlineno1, CustomerVendorDetails.landlineno2, CustomerVendorDetails.faxno, ContactPersonDetails.contactno, 
      ContactPersonDetails.designation 
FROM  CustomerVendorDetails INNER JOIN 
      CustomerVendorAddressDetails ON CustomerVendorDetails.customervendorid = CustomerVendorAddressDetails.customervendorid INNER JOIN 
      ContactPersonDetails ON CustomerVendorAddressDetails.customervendorid = ContactPersonDetails.customervendorid 
WHERE  (@customervendortype is null or customervendortype like @customervendortype) 
     or (@customervendorid is null or customervendorid like @customervendorid) 
     or (@customervendorname is null or customervendorname like @customervendorname) 
     or (city is null or city like @city) 
     or (state is null or state like @city) 
END 

im obtenir cette erreur

Msg 209, Level 16, State 1, Procedure sp_searchcustomervendordetails, Line 34 
Ambiguous column name 'customervendorid'. 
Msg 209, Level 16, State 1, Procedure sp_searchcustomervendordetails, Line 35 
Ambiguous column name 'customervendorname' 

peut m'aider s'il vous plaît

Répondre

1

En général, vous obtiendrez une erreur "nom de colonne ambiguë" lorsque vous effectuez un select qui joint plusieurs tables qui ont au moins une colonne avec le même nom e, puis vous référencez cette colonne sans le préfixer avec la table.

Je votre cas, je suppose que la colonne customervendorname apparaît dans plus d'une table (peut-être CustomerVendorDetails et CustomerVendorAddressDetails?) Donc quand vous l'utilisez dans la clause where vous devez le préfixe avec le nom de la table. Je vois en effet que vous l'avez déjà fait dans la liste des colonnes à sélectionner; vous avez juste besoin de faire la même chose tout au long de la déclaration.

Ainsi

WHERE (@customervendortype is null or 
     customervendortype like @customervendortype) 

doit devenir

WHERE (@customervendortype is null or 
     CustomerVendorAddressDetails.customervendortype like @customervendortype) 

et peut-être des changements similaires pour les autres contraintes.

+0

merci ami son travail – Raj

0

Le problème doit être dans cette partie:

or (@customervendorid is null or customervendorid like @customervendorid) 
     or (@customervendorname is null or customervendorname like @customervendorname) 

Vous devriez vérifier si vous avez customervendorid et les colonnes de customervendorname dans vos CustomerVendorAddressDetails et tables ContactPersonDetails

0

(@customervendorid est nul ou customervendorid comme @customervendorid) ou (@customervendorname est null ou customervendorname comme @customervendorname)

vérifiez ces deux lignes ..

s'il vous plaît poster vos structures de table pour le client et l'autre tableau que vous utilisez. Il sera facile de deviner l'erreur

0

remplacer customervendorid par CustomerVendorDetails.customervendorid et customervendorname par CustomerVendorAddressDetails.customervendorname dans où la condition fonctionnera.