Member 12770648 Ответов: 1

Пожалуйста, помогите заполнить инструкцию select с помощью @MWHERE


SQL SERVER 2008.

ПОЖАЛУЙСТА, ПОМОГИТЕ ЗАПОЛНИТЬ ПРИВЕДЕННОЕ НИЖЕ ЗАЯВЛЕНИЕ SELECT С ПОМОЩЬЮ @MWHERE




Если @CDCOMPT < & gt;'Все'
НАЧАТЬ
УСТАНОВИТЕ @MWHERE=@MWHERE+ 'И A.COMP_TYPE=@CDCOMPT'
КОНЕЦ
ЕЩЕ
ЕСЛИ @CDCOMPT = 'ВСЕ'
НАЧАТЬ
SET @MWHERE=@MWHERE
КОНЕЦ
-----------------------------------
------COMPLAINT_TYPE---------------
-----------------------------------

ВЫБЕРИТЕ * ОТ ОТВЕТА
ЛЕВОЕ СОЕДИНЕНИЕ ОТВЕТВЛЕНИЕ С
На A. BRN_NAME = C. BRN_NAME
ЛЕВОЕ СОЕДИНЕНИЕ PAYMAST B
А. Л. Неймане+"+А. имени+"+А. EMPNO= Б. Л. Неймане+"+Б.FNAME+" + B. EMPNO
&@MWHERE

Что я уже пробовал:

Это коды, которые мне нужна помощь, чтобы исправить

RedDk

Я вижу здесь и в других местах трудности с концепциями TSQL, которые Работа с образцами "Book on Line" быстро сделает менее трудными. В соответствии с подсказкой F1 для отдельных ключевых слов идея состоит в том, что выбор операторов, начинающихся с чего-то вроде "SELECT", приведет вас к чему-то, что работает.

Говоря о работах, я также предлагаю установить базу данных AdventureWorks, которая является рогом изобилия хороших тактик программирования и нюансов, которые никакая печатная копия на земле, доступная через Amazon или Ebay, не отменит.

В заключение:

Установите болт
Установите на базе Оу

1 Ответов

Рейтинг:
1

OriginalGriff

1) НЕ КРИЧИТЕ. Использование всех заглавных букв считается криком в интернете и грубостью (использование всех строчных букв считается ребячеством). Используйте правильную капитализацию, если хотите, чтобы вас воспринимали всерьез.

2) Начните с попытки выяснить, в чем проблема: помните, что мы понятия не имеем, что должен делать оператор SELECT, или какой-либо доступ к вашей БД, чтобы узнать, что он может делать.
Но тут есть некоторые странности:

SET @MWHERE=@MWHERE
Ничего не делать.
Таким образом, этот код полностью избыточен:
IF @CDCOMPT ='ALL' 
BEGIN 
SET @MWHERE=@MWHERE 
END

И этот код, вероятно, мог бы использовать пробел:
SET @MWHERE=@MWHERE+'AND A.COMP_TYPE=@CDCOMPT'
Попробуй:
SET @MWHERE=@MWHERE+' AND A.COMP_TYPE=@CDCOMPT'
А "&" - это побитовый оператор SQL, который выдаст вам ошибку при применении к строкам:
ON A.LNAME+''+A.FNAME+''+A.EMPNO= B.LNAME+''+B.FNAME+''+B.EMPNO
&@MWHERE
Вероятно, вы пытаетесь построить команду, которая подразумевает, что вам нужно "+" вместо этого, но тогда вам придется построить всю команду в строку и использовать EXEC для ее запуска.


Richard Deeming

Предпочтительно процедуры sp_executesql[^], с правильно параметризованным запросом. :)