Синтаксическая ошибка при попытке объявить переменную в SQL и использовании оператора if-else. - синтаксическая ошибка в или около "VARCHAR" - PullRequest
0 голосов
/ 13 октября 2019

Код ниже показывает ошибку рядом с типом данных Varchar, а также рядом с оператором if - синтаксическая ошибка в или рядом с "VARCHAR"

Я попытался проверить регистр с учетом регистра и присвоить значение.

Declare
Userstate VARCHAR := 'Active' ;
begin
if u.disabled_at is null
then
Userstate = 'Inactive';
else
Userstate = 'Active';
end if
end

select o.id as Organisationid,o.name as OrganisationName, orl.user_id as "UserID", u.username as "UserName" ,
Userstate as "Active/Inactive" ,orl.role as "UserType"
from org_user_roles orl
Full outer join orgs o on
o.id = orl.org_id 
Full outer join users u on
orl.user_id  = u.id

Я должен объявить переменную и использовать ее в операторе if-else. Где u.disabled_at - это столбец пользователей таблицы. Затем я пытаюсь объединить свои таблицы, чтобы получить выходные данные в операторе select и переменную из оператора if-else.

1 Ответ

1 голос
/ 13 октября 2019

Вам здесь вообще не нужен ни plsql, ни объявления переменных, ни присваивания. В своем запросе просто используйте case выражение :

select
  o.id as "OrganisationID",
  o.name as "OrganisationName",
  u.id as "UserID",
  u.username as "UserName",
  (case when u.disabled_at is null
    then 'Inactive'
    else 'Active'
  end) as "Active/Inactive",
  orl.role as "UserType"
from
  org_user_roles orl
  full outer join orgs o on o.id = orl.org_id 
  full outer join users u on orl.user_id = u.id
...