On Tue, Dec 18, 2012 at 10:03 AM, Little, Douglas <douglas.lit...@orbitz.com
> wrote:

> Hi,****
>
> ** **
>
> I need to evaluate an expression that I have stored in a table,  and not
> sure how to force evaluation of a column value.****
>
> ** **
>
> Some background.  This is a generic testing application that we’re using
> to test source to target ETL’s.****
>
> The specifics of the test expression depend on the actual tables
> involved.   Typicallly it’s been  table_a.col_a = table_b.col_b   but now
> they want to use inequality or other operators.****
>
> The tester’s define the test criteria in a table,  then we use that
> criteria to actually score the runtime results.****
>
> ** **
>
> In my design I have 3 tables.****
>
> Test – stores the test definition****
>
> Testrun – stores the actual sql for a specific execution of a test****
>
> Testscore – stores the actual values of the source and target values.
> The scores are stored in different rows, with a common name to allow them
> to be matched in the query. ****
>
> ** **
>
> The pass/fail query looks something like this****
>
> ** **
>
> Update  testscore****
>
> Set metricstatus = case when table_a.col_a = table_b.col_b    then
> ‘PASS’   else ‘FAIL’ end****
>
> ..****
>
> Where testrunid=x****
>
> ** **
>
> I want to replace the table_a.col_a = table_b.col_b   with the expression
> stored in the test table and evaluate. ****
>
> ** **
>
> I’m thinking – it’s dynamic sql, so I need to build the statement and then
> evaluate using a function.****
>
> ** **
>
> Anybody have any comments?
>

probably you need a pl/pgsql function which wraps your argument table,
builds the query, and invokes the query with EXECUTE.

beware sql injection.

merlin

Reply via email to