Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / char работает только с символами цифр / 4 сообщений из 4, страница 1 из 1
29.06.2019, 14:57
    #39831878
heipit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
char работает только с символами цифр
есть такая функция, для упрощения удалила из тела функции все лишнее,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE OR REPLACE FUNCTION public.gotest(
	tr integer,
	td "char",
	symbol "char" DEFAULT '0')
    RETURNS void
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE 
    ROWS 1000
AS $BODY$
 BEGIN
    EXECUTE 'UPDATE tictactoe SET '||td||'='||symbol||' WHERE  num='||tr||'';
 END;$BODY$;
	


когда я вместо symbol подставляю цифры - все нормально, но когда пытаюсь подставить символ то происходит ошибка:
# select * from gotest(1, 'b', 'k');
ОШИБКА: столбец "k" не существует
СТРОКА 1: UPDATE tictactoe SET b=k WHERE num=1

так же я пыталась делать тип symbol character и char без кавычек, тоже самое, что не так?
...
Рейтинг: 0 / 0
29.06.2019, 15:30
    #39831881
torbasow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
char работает только с символами цифр
heipitтак же я пыталась делать тип symbol character и char без кавычек, тоже самое, что не так?

Я не понимаю Вашего русского языка, но по коду видно, что Вы путаете идентификатор (имя столбца) и литерал. Надо так:

Код: plsql
1.
EXECUTE 'UPDATE tictactoe SET ' || quote_ident(td) || ' = $1 WHERE num = $2' USING symbol, tr;
...
Рейтинг: 0 / 0
29.06.2019, 17:51
    #39831907
heipit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
char работает только с символами цифр
спасибо! заработало
правда я так и не поняла почему когда я использовала цифры вместо символов - все работало как было задумано
...
Рейтинг: 0 / 0
29.06.2019, 18:12
    #39831916
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
char работает только с символами цифр
heipit,

Потому что цифры пишутся как есть в запросах: UPDATE tictactoe SET b=123 WHERE num=1;
А строки надо в кавычках писать: UPDATE tictactoe SET b='k' WHERE num=1;
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / char работает только с символами цифр / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]