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
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to