|
select column1, column2 from table(...)
|
|||
---|---|---|---|
#18+
Приветствую всех. Есть такая функция Код: plaintext 1. 2. 3. 4.
Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2009, 12:51 |
|
select column1, column2 from table(...)
|
|||
---|---|---|---|
#18+
Автор c таким именемПриветствую всех. Есть такая функция Код: plaintext 1. 2. 3. 4.
Код: plaintext
Код: plaintext
как-то так Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2009, 13:40 |
|
select column1, column2 from table(...)
|
|||
---|---|---|---|
#18+
О как хитро. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2009, 15:45 |
|
select column1, column2 from table(...)
|
|||
---|---|---|---|
#18+
-- поэкспериментировав, докладываю: -- для 9.40.FC3 --1. если возвращается один параметр, то можно через MULTISET drop function f; create function f () returning integer as col1; return 1 ; end function; --SELECT * FROM TABLE(FUNCTION f()) AS t1(col1); -- -9786 SQL error: SLV's not allowed in the from clause. SELECT * FROM TABLE(SET{ f()}) AS t1(col1) ; -- работает SELECT * FROM TABLE(MULTISET{ f()}) AS t1(col1); -- работает --2. если возвращается один параметр with resume, то можно через FUNCTION drop function f; create function f () returning integer as col1; return 1 with resume; end function; SELECT * FROM TABLE(FUNCTION f()) AS t1(col1); -- работает --SELECT * FROM TABLE(SET{ f()}) AS t1(col1) ; -- -686 SQL error: Function (owner.f) has returned more than one row. --SELECT * FROM TABLE(MULTISET{ f()}) AS t1(col1); --3. если возвращается несколько параметров, то: drop function f; create function f () returning integer as col1, integer as col2; return 1,2 ; end function; --SELECT * FROM TABLE(FUNCTION f()) AS t1(col1,col2); -- -9786 SQL error: SLV's not allowed in the from clause. --SELECT * FROM TABLE(SET{ f()}) AS t1(col1,col2) ; -- -684 SQL error: Function (owner.f) returns too many values. --SELECT * FROM TABLE(MULTISET{ f()}) AS t1(col1,col2); -- -684 SQL error: Function (owner.f) returns too many values. -- поэтому в случае с несколькими возвращаемыми параметрами, возможно только если возвращается with resume -- даже если это одна строчка drop function f; create function f () returning integer as col1, integer as col2; return 1,2 with resume; end function; SELECT col2 FROM TABLE(FUNCTION f()) AS t1(col1,col2); SELECT col2, col1*10 FROM TABLE(FUNCTION f()) AS t1(col1,col2); --SELECT * FROM TABLE(SET{ f()}) AS t1(col1,col2) ; -- -684 SQL error: Function (owner.f) returns too many values. --SELECT * FROM TABLE(MULTISET{ f()}) AS t1(col1,col2); ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2009, 12:45 |
|
|
start [/forum/topic.php?fid=44&fpage=26&tid=1607698]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 329ms |
total: | 462ms |
0 / 0 |