|
имя таблицы как параметр для PL/pgSQL
|
|||
---|---|---|---|
#18+
Можно ли в Postgres в PL/pgSQL в качестве параметра передавать имя таблицы ? В хранимой процедуре должен быть прописан запрос, в котором имя таблицы заранее неизвестно, а передаётся функции в качестве параметра. Я пробовал так, но Postgres ругается: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2003, 13:46 |
|
имя таблицы как параметр для PL/pgSQL
|
|||
---|---|---|---|
#18+
нет ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2003, 15:56 |
|
имя таблицы как параметр для PL/pgSQL
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2003, 16:00 |
|
имя таблицы как параметр для PL/pgSQL
|
|||
---|---|---|---|
#18+
2 Sad Spirit Нет так тоже не получится! Почти правильно так : create or replace function myfunc(text) returns int4 as ' declare tablename alias for $1; DECLARE tmprec RECORD; declare res1 int4; begin execute ''select count(*) as cnt into tmprec from '' || quote_ident(tablen res1 :=tmprec.cnt; return(res1);--tmp_record.cnt end; 'language 'plpgsql' Но почти- несчитается потому что почти это тоже ошибка 8)) Смотрите сами : myfunc1 - вариант предложенный Sad Spirit myfunc - приведенный в этом посте. avalon|R1>psql -q -c "select myfunc1('classes') " tests WARNING: Error occurred while executing PL/pgSQL function myfunc1 WARNING: line 9 at assignment ERROR: Type "execute" does not exist --------------------------------------------------------------------------------------------------------- avalon|R1>psql -q -c "select myfunc('classes') " tests WARNING: Error occurred while executing PL/pgSQL function myfunc WARNING: line 5 at execute statement ERROR: EXECUTE of SELECT ... INTO is not implemented yet Кабы этот чертов форум так не глючил ..... А вообще в доке написано The results from SELECT queries are discarded by EXECUTE, and SELECT INTO is not currently supported within EXECUTE. So, the only way to extract a result from a dynamically-created SELECT is to use the FOR-IN-EXECUTE form described later. Те придется считать записи в цикле FOR .... что тоже не ахти. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2003, 16:44 |
|
|
start [/forum/topic.php?fid=53&fpage=363&tid=2008091]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 246ms |
total: | 396ms |
0 / 0 |