Niall - thanks. If I understand correctly - you use bash to do the
preprocessing of the substitutions and submit the prepared statements to
Sqlite.

On Fri, Jun 15, 2012 at 1:48 AM, Niall O'Reilly <[email protected]>wrote:

>
> On 14 Jun 2012, at 22:16, Udi Karni wrote:
>
> > Is there a way to run SQL scripts in the Shell with parameters?
> >
> > Something like this?
> >
> > set &YEAR = 2010
> >
> > SELECT COUNT (*) FROM TABLE WHERE YEAR = &YEAR ;
> >
> > ???
>
>         I use bash and sqlite3, as in the fragment below.
>
> #!/bin/bash
>
> # query-script for netdb/SQL
>
> qtype=${2-node_by_name_or_alias}
> dbfile=${3-default-network.db}
>
> case $qtype in
>    object_by_property)
>        qkey=${1-code=EE}
>        echo "  Performing query '$qtype' for search argument '$qkey' in
> database '$dbfile'"
>        echo
>        tag=`echo $qkey | sed -e 's/=.*//'`
>        val=`echo $qkey | sed -e 's/.*=//'`
>        /usr/bin/time /usr/local/bin/sqlite3 "$dbfile" <<EOF
> -- tailor display
> -- .mode tabs
> .separator ' '
>
> -- select memory for temporary storage
> pragma temp_store = memory;
>
> create temporary table tmp_objects (object_ref integer);
>
> -- collect objects whose name or alias exactly matches the search key
> insert into tmp_objects
>        select distinct object_ref from property where tag = '$tag' and
> value = '$val';
>
> -- show count
> select count(), 'object(s) found' from (select distinct object_ref from
> tmp_objects);
>
> -- collect linked objects (ranges, interfaces ...)
> insert into tmp_objects
>        select origin_ref from tie where target_ref in (select distinct
> object_ref from tmp_objects);
> select id, '', class, '' from object where id in (select distinct
> object_ref from tmp_objects)
>        union all
>        select origin_ref, '  ', class, target_ref from tie where
> target_ref in (select object_ref from tmp_objects)
>        union all
>        select object_ref, '  ', tag, value from property where object_ref
> in (select object_ref from tmp_objects)
>        order by object_ref asc;
>
> EOF
>        ;;
>
> # Other cases omitted ...
>
>    *)
>        echo "  Unknown query: '$qtype'"
>        ;;
>    esac
>
>
>        I hope this helps.
>
>
>        Best regards,
>
>        Niall O'Reilly
>        University College Dublin IT Services
>
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to