проблема с хранимой процедурой? - PullRequest
0 голосов
/ 17 августа 2010

Это моя основная структура таблицы:

alt text

Столбец «экспертиза» - это отношение «многие ко многим» с другой таблицей, в которой есть список доступных языков.Я хотел иметь уплощенную структуру для отображения всех языков, которыми владеет человек, поэтому я написал хранимую процедуру, которая структурирует эти множественные знания для каждого пользователя.

Когда я вызывал этот sp из моего wpf-приложения, он не отображал значения.Я попробовал «данные предварительного просмотра» из браузера объектов, который показал только одну строку моей таблицы.

(Ожидаемый результат:

alt text

В чем проблема с моимподход?

мой Sp:

create procedure myView as
Begin
DECLARE @count INT,@finCount INT,@result varchar(50)
SET @result =' '
SET @count = 1
SELECT @finCount=COUNT(*) FROM usersProfile 
WHILE (@count <= @finCount )
 BEGIN
   SELECT @result=@result+langName+','
   FROM expertises
   INNER JOIN ED_UPD_MERGE on expertises.id=ED_UPD_MERGE.idfrmED
   INNER JOIN usersprofile on ED_UPD_MERGE.idfrmUPD=usersprofile.expertiseid
   WHERE  usersprofile.id =@count

   SELECT usersProfile.id,usersProfile.fullname,usersProfile.screename  ,usersProfile.age ,usersProfile.address ,usersProfile.emailid1 ,usersProfile.emailid2 ,usersProfile.isActive ,usersProfile.entryCreated ,usersProfile.entryModified ,usersProfile.experience ,roles.rolesName,@result as Expertise
   FROM usersProfile        
   JOIN roles
   ON usersProfile.roleid =roles.id 
   WHERE  usersprofile.id =@count
   SET @result= ''
   SET @count = (@count + 1) 
  END
 End

Ответы [ 2 ]

1 голос
/ 17 августа 2010

Не могли бы вы опубликовать код WPF?


В качестве обозначения:

Было бы гораздо лучше разработать таблицу Expertise, а затем сопоставить это поле с идентификаторами экспертизы. Итак, в основном:

Таблица:

  • ExpertiseID
  • ExpertiseDescription

Затем в своей области, которую вы в настоящее время используете для экспертизы, вы создадите таблицу мостов и создадите новую таблицу взаимосвязей.

0 голосов
/ 18 августа 2010

Разрешает ли столбец langName значения NULL? Если вы объедините хотя бы один NULL со строкой @result, вы получите результат NULL. Если в столбце langName разрешены значения NULL, и если вы хотите игнорировать строки с langName, вы можете изменить:

SELECT @result=@result+langName+','

до

SELECT @result=@result+ ISNULL(langName+',', '')

Это добавит пустую строку в конец @result, если langName равно нулю; в противном случае langName будет добавлено к строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...