powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / char работает только с символами цифр
4 сообщений из 4, страница 1 из 1
char работает только с символами цифр
    #39831878
heipit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть такая функция, для упрощения удалила из тела функции все лишнее,
Код: 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
char работает только с символами цифр
    #39831881
Фотография torbasow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heipitтак же я пыталась делать тип symbol character и char без кавычек, тоже самое, что не так?

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

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

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


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