Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9188259
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 17, 20262026-06-17T19:57:48+00:00 2026-06-17T19:57:48+00:00

I’m trying to write a stored procedure that returns a table. The procedure is

  • 0

I’m trying to write a stored procedure that returns a table. The procedure is syntactically correct and psql accepts it, but it throws runtime errors.

What I have so far:

CREATE OR REPLACE FUNCTION get_todays_appointments()
RETURNS TABLE 
(
    fname VARCHAR(32),
    lname VARCHAR(32),
    phoneno CHAR(10),
    datetime TIMESTAMP WITHOUT TIME ZONE,
    duration INTERVAL,
    caseid INTEGER
) AS $$
BEGIN
    RETURN QUERY
        SELECT
        (
            client.fname, 
            client.lname, 
            client.phoneno, 
            appointment.datetime, 
            appointment.duration, 
            photocase.caseid
        )
            FROM  (appointment NATURAL JOIN photocase NATURAL JOIN client)
            WHERE 
            (
                appointment.datetime >= current_date 
                AND appointment.datetime < current_date + 1
            );
END;
$$
LANGUAGE plpgsql;

If I execute the query manually, it works exactly as indended, but using the SP I always run into the following error:

ERROR: structure of query does not match function result type
DETAIL: Returned type record does not match expected type character varying in column 1.
CONTEXT: PL/pgSQL function “get_todays_appointments” line 3 at RETURN QUERY

I’ve double checked the table schema about 15 times and theyre definitely correct.

The weird part is that the function works fine if I prune attributes so it returns only one at a time. As soon as I try to return more than one attribute, it throws the error.

I’ve googled and found some examples but nothing that actually works. I’ve also seen the use of SETOF, but there is no table with this signature so it doesn’t really help me.

I’m using postgresql v9.1.7.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-17T19:57:49+00:00Added an answer on June 17, 2026 at 7:57 pm

    I don’t have a convenient way to test this right now, but I think you’re going to have to lose some parens.

    CREATE OR REPLACE FUNCTION get_todays_appointments()
    RETURNS TABLE 
    (
        fname VARCHAR(32),
        lname VARCHAR(32),
        phoneno CHAR(10),
        datetime TIMESTAMP WITHOUT TIME ZONE,
        duration INTERVAL,
        caseid INTEGER
    ) AS $$
    BEGIN
        RETURN QUERY
            SELECT
                client.fname, 
                client.lname, 
                client.phoneno, 
                appointment.datetime, 
                appointment.duration, 
                photocase.caseid
                FROM  (appointment NATURAL JOIN photocase NATURAL JOIN client)
                WHERE 
                (
                    appointment.datetime >= current_date 
                    AND appointment.datetime < current_date + 1
                );
    END;
    $$
    LANGUAGE plpgsql;
    

    PostgreSQL’s error messages are usually pretty good. This one is literally true.

    ERROR: structure of query does not match function result type DETAIL:
    Returned type record does not match expected type character varying in
    column 1. CONTEXT: PL/pgSQL function “get_todays_appointments” line 3
    at RETURN QUERY

    In this case, RETURN QUERY returns a value of type “record”. That’s because a row constructor looks like this, SELECT ROW(value1, column1, column2). And in a SELECT statement, the keyword “ROW” is optional, so a row constructor looks like this: SELECT (value1, column1, column2).

    So this skeleton syntax

    select (column1, column2) from whatever 
    

    is equivalent to this.

    select row(column1, column2) from whatever
    

    But you don’t want that. You want something equivalent to this.

    select column1, column2 from whatever
    

    So lose those parens around the column list.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a French site that I want to parse, but am running into
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
I'm trying to convert HTML to plain text. I get many &\#8217; &\#8220; etc.
I'm trying to create an if statement in PHP that prevents a single post
I am trying to understand how to use SyndicationItem to display feed which is
Basically, what I'm trying to create is a page of div tags, each has
link Im having trouble converting the html entites into html characters, (&# 8217;) i
That's pretty much it. I'm using Nokogiri to scrape a web page what has
I want to count how many characters a certain string has in PHP, but
I am trying to find ID3V2 tags from MP3 file using jid3lib in Java.

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.