Hi Everyone, Firstly I would like to thank everyone for your feedback. Secondly I would like to apologise, I had spent some time trying to write some dynamic SQL in postgres yesterday and got extremely frustrated at the the time I wasted. I realize this a community and I'm sorry for not being more constructive in my comment.
The reason for my frustration is this has happened before; where I look the examples and think I know how to use it only to run into syntax errors. I have tried the specific dynamic SQL examples inside script blocks and I get syntax errors. If it only works in functions it would be good to know that. If it's not that then I wonder if perhaps the problem is PG Admin. Often the way I learn with a new language is by trying to do something that I need. Hence I hit the docs at the point that I think will help me. If this happens with other developers perhaps it would be helpful for the examples to list where the specific language feature can be used. I am not the only one as my colleagues have run into exactly the same thing. Hopefully this input is a little more constructive and again thank you all for taking the time to respond. On Thu, 22 Jun 2017 at 02:47 David G. Johnston <david.g.johns...@gmail.com> wrote: > >>> 2017-06-21 10:39 GMT+02:00 <gerardm...@gmail.com>: > >>> > >>> Your documentation although it seems straight forward actually never > >>> works. > > Most of it is not written as self-contained examples so this is not > surprising. > > >>> Please explain limitations or where the script can actually be > executed. > > That would be the responsibility of chapters 36 and 41.2 (and maybe > some others); chapters prior to the one you are complaining about. > Again, this isn't a cookbook format where every section and example is > self-contained. This requires the reader to adopt their own > techniques for actually starting with functioning code and keeping it > functioning as new capabilities are introduced. For better and worse > I don't foresee any volunteering significant time to change the style > of the documentation - particularly without a large volume of specific > complaints and/or suggestions to work from. > > >>> As a beginner starting out in postgre you can never rely on the > >>> documentation because the same thing happens, you copy the code and > make > >>> your modifications and you get syntax error. > > Which means that some more fundamental aspect of the capability you > are trying to learn hasn't yet been figured out and so that code you > are writing is not operating in the context that the documentation > assumes it is. You need to go back earlier in the > process/documentation and get the fundamentals out of the way. > > >>> Clearly define the limitations of your language so that developers > >>> don't > >>> waste their time. > > Either there is a distinct lack of others encountering the same > problems or they avail themselves of other solutions. In any case the > authors of the documentation cannot foresee every confusion or problem > that may arise. That's part of why the mailing lists exist. Ideally > you'd come here, get un-stumped, look back at why you got stumped in > the first place, and suggest documentation improvements that would > help prevent the next person from being stumped in a similar matter. > That flow would, IMO, be in the true spirit of this open source > community. > > >>> Coming from ms sql quite frankly I would never recommend postgress. The > >>> barrior to entry into actualy writing code is too great. > > --file: create-functions.sql > --might not work as-is but the structural components you require are here. > CREATE FUNCTION remove_all_users() RETURNS SETOF bigint AS $$ > DELETE FROM users RETURNING user_id; > $$ LANGUAGE SQL; > > CREATE FUNCTION do_it() RETURNS void AS $$ > BEGIN > RAISE NOTICE 'Performing User Removal'; > PERFORM remove_all_users(); -- using perform since we don't care about > returned user_id's > END; > $$ LANGUAGE plpgsql; > > $psql > >\i create-functions.sql > #now the two functions exist on the server > >SELECT do_it(); > %NOTICE: Performing User Removal > do_it > ------- > > --this would be roughly equivalent but "DO" won't return a result > which SELECT do_it() does. > --still in psql... > DO $$ > BEGIN > PERFORM remove_all_users(); > END; > $$; --implied pl/pgsql language > > I cannot speak to learning MS SQL compared to PostgreSQL; but in some > ways having existing, but difference, experience hurts since you are > apt to make assumptions about how things should work that are not > true. > > Your welcome to your venting but all I see here is a specific case of > learning having gone into spiral. The community here is great at > helping people get themselves out these kinds of spirals. That the > documentation cannot do so all by itself is not a failing of the > documentation or its authors. > > David J. >