I have stored procedure, which
RETURNS SETOF ct_custom_type and inside I do
RETURN QUERY EXECUTE 'some dynamic query'
And I want to do this: If this 'dynamic query' returns >= 10 rows, I want to return them, but if it returns only < 10 rows, I don't want to return anything (empty set of
RETURN QUERY EXECUTE 'some dynamic query' GET DIAGNOSTICS variable = ROW_COUNT; IF variable < 10 THEN # I don't know what to do here or how to accomplish this END IF;
If I do
RETURN QUERY SELECT 0, 0, ''::text; in
IF block (because
ct_custom_type is composite type of integer, integer, text), it just adds this 'empty row' to previous query result, but I don't want to return anything in this case, I can do
RETURN;, but it will return that previous result and I want to discard it.
I have it like this
EXECUTE 'dynamic query'; GET DIAGNOSTICS variable = ROW_COUNT; IF variable >= 10 THEN RETURN QUERY EXECUTE 'dynamic query'; END IF;
and it works, but I didn't want to do this query two times