Guest User

Untitled

a guest
Jan 18th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION readMessage(messageFor INT, qid INT = NULL, ctxt INT = NULL, messageFrom INT = NULL, byTimeStamp BOOLEAN = FALSE)
  2. RETURNS SETOF message
  3. AS $$
  4. DECLARE
  5. sql varchar;
  6. BEGIN
  7. sql := 'SELECT * FROM message WHERE (receiver_id IS NULL OR receiver_id = $1)';
  8. IF qid IS NOT NULL THEN
  9. sql := sql || ' AND queue_id = $2';
  10. END IF;
  11. IF ctxt IS NOT NULL THEN
  12. sql := sql || ' AND context = $3';
  13. ELSE
  14. sql := sql || ' AND context IS NULL';
  15. END IF;
  16.  
  17. IF $4 IS NOT NULL THEN
  18. sql := sql || ' AND sender_id = $4';
  19. END IF;
  20.  
  21. sql := sql || ' ORDER BY';
  22. IF byTimeStamp THEN
  23. sql := sql || ' arrive_time ASC';
  24. ELSE
  25. sql := sql || ' priority DESC';
  26. END IF;
  27.  
  28. sql := sql || ' LIMIT 1';
  29. RETURN QUERY EXECUTE sql
  30. USING messageFor, qid, ctxt, messageFrom;
  31. END;
  32. $$
  33. LANGUAGE plpgsql;
  34.  
  35. Connection con;
  36. PreparedStatement ps = con.prepareStatement("select readMessage(1, 1, 1, 1, true))";
  37. ResultSet rs = ps.executeQuery();
  38. rs.getInt(<column-name>)
  39.  
  40. rs.getInt(<column-index>)
  41.  
  42. CREATE TABLE test.child (
  43. id integer,
  44. p_id1 integer,
  45. p_id2 integer
  46. );
  47.  
  48. CREATE OR REPLACE FUNCTION named_cols()
  49. RETURNS SETOF test.child
  50. LANGUAGE sql
  51. AS $$ SELECT 0, 12, 23; $$;
  52.  
  53.  
  54. SELECT named_cols();
  55. named_cols
  56. ────────────
  57. (0,12,23)
  58.  
  59.  
  60. SELECT * FROM named_cols();
  61. id │ p_id1 │ p_id2
  62. ────┼───────┼───────
  63. 0 │ 12 │ 23
  64.  
  65. SELECT * FROM [FUNCTION_NAME()]
Add Comment
Please, Sign In to add comment