Dear monks,

although I have a a few solutions for my problem, I have none with which I would be really happy, so I'm coming to ask around:

how do You embed SQL in your code?

My current way to do it - I'm referring mostly to complex queries, usually with a subroutine build around them - is something like
my $sql = qq/ SELECT a.somedata1, a.somedata2, a.somedata3, [...] FROM table1 a, table2 b, table3 c WHERE a.somedata4 > ? /; $sql .= qq/ AND a.somedata5 <= ? AND [...] / if some_perl_code_condition1; $sql .= qq/ AND b.somedata6 >= ? [...] / if some_perl_code_condition2; $sql .= qq/ORDER BY somedata7 /;
That's as readable as I could make it. Still, if later on, after being built, the resulting sql string is printed out for testing or is logged, the embedded newlines and spaces make the shown SQL string rather less appealing.

Clearly, I do want to get an optimum of somewhat opposite requirements - keeping the SQL readable in Perl, but also rather easy to cut-and-paste into/from SQL for testing/editing. Giving up indentation to use HERE documents seems not an real alternative, as I'd like to _keep_ the subroutine code nicely indented.

How are You solving this conundrum in the code you write?

Many thanks,

Krambambuli
---

In reply to Perl style/best practice question: how to [better] embed SQL in code ? by Krambambuli

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.