Relations as arguments to a stored procedure?
От | |
---|---|
Тема | Relations as arguments to a stored procedure? |
Дата | |
Msg-id | 200603091837.k29IbU228541@panix3.panix.com обсуждение исходный текст |
Ответы |
Re: Relations as arguments to a stored procedure?
|
Список | pgsql-novice |
Is there a way to pass a relation (or view) as one of the arguments to a stored procedure? Consider the following pseudo-code: function foo ( table T, int X ) { int Y = computationally_demanding_function( X ); foreach record R in T { insert some_other_function( R, Y ) in RESULTS; } return RESULTS; } Since the computation of Y is time-consuming, I don't want to repeat it for every record in the input table T. This rules out an implementation in which foo takes a single record as its first argument, and is applied to each record in some input table through a SELECT statement. Alternatively, one could define foo to take, as arguments, a single record and a precomputed Y = computationally_demanding_function( X ), but this requires users to know about computationally_demanding_function, which may be completely extraneous to their needs. All they know is that they have a relation T and a parameter X, and want to perform a particular operation, which depends expensively on X, on each record of T. I'd find it surprising that procedures for a RDBMS would not accept relations as parameters, but I can't find any info on this. I also know about arrays, but it seems like working with arrays is a real bear. Just getting documentation on them is already a major undertaking. I've spent about one hour trying to find out how one iterates over an array if one doesn't know its length beforehand (or how to determine its length in the first place). I don't even yet know how to initialize an array from the rows of a 1-column table; I imagine finding the answer to that will be another multi-hour assignment. These are the most basic questions I can imagine for an array data structure, but finding answers for them appears to be *insanely difficult*. What am I missing? Thanks! kj P.S. Practically every time I post to this list I ask for good sources of documentation (because obviously the ones I use are terrible). Invariably I am referred to the online PostgreSQL documentation, but as the questions above show, the online documentation is not working for me. I guess I refuse to believe that questions as elementary and fundamental as mine are not documented anywhere...
В списке pgsql-novice по дате отправления: