Hi Stefano,
if you need a more complex language set "javascript" and use JS as language
allowing more complex thing:
https://github.com/orientechnologies/orientdb/wiki/SQL-batch

About rollback, if any exception occurs, the tx is automatically rollbacked.

Lvc@


On 4 April 2014 16:02, Stefano Migliucci <[email protected]> wrote:

> Hi,
> how is possible to use "rollback" command?
> Do we need something like IF, TRY/CATCH, etc?
> Can you post an example?
>
> Stefano
>
> Il giorno lunedì 31 marzo 2014 20:46:31 UTC+2, Lvc@ ha scritto:
>
>> Hi all,
>> OrientDB allowed to execute arbitrary script written in Javascript or any
>> scripting language installed in the JVM. Well, starting from now we created
>> a minimal SQL engine to allow batch of commands.
>>
>> Batch of commands are very useful when you have to execute multiple
>> things at the server side avoiding the network roundtrip for each command.
>>
>> Example to create a new vertex in a transaction and attach it to an
>> existent vertex by creating a new edge between them:
>>
>>
>>
>>
>>
>>
>> *beginlet account = create vertex Account set name = 'Luke'let city =
>> select from City where name = 'London'let edge = create edge Lives from
>> $account to $city retry 100 commitreturn $edge*
>>
>> It's plain OrientDB SQL, but with few news:
>>
>>    - *begin* -> begins a transaction
>>    - *rollback* -> rollbacks an active transaction
>>    - *commit* -> commits an active transaction
>>    - *let <variable> = <command>* -> executes a command and assign it in
>>    the context as . That variable can be used in further commands by 
>> prefixing
>>    it with $
>>    - *return* <variable>|<value>|null -> returns a value instead of last
>>    command result (default
>>
>> Note also the usage of* $account *and* $city* on further SQL commands.
>>
>> *Java API*
>>
>> This can be used by Java API with:
>>
>> database.open("admin", "admin");
>> String cmd = "begin\n";cmd += "let a = create vertex set script = 
>> true\n";cmd += "let b = select from v limit 1\n";cmd += "let e = create edge 
>> from $a to $b retry 100\n";cmd += "commit\n";cmd += "return $e";
>>
>> OIdentifiable edge = database.command(new OCommandScript("sql", 
>> cmd)).execute();
>>
>> Remember to put one command per line (postfix it with \n).
>>
>> *HTTP REST API*
>>
>> And via HTTP REST interface (https://github.com/
>> orientechnologies/orientdb/issues/2056). Execute a POST against /batch
>> URL by sending this payload:
>>
>> { "transaction" : true,
>>   "operations" : [
>>     {
>>       "type" : "script",
>>       "language" : "sql",
>>       "script" : [ "let account = create vertex Account set name = 'Luke'",
>>                    "let city =select from City where name = 'London'",
>>                    "create edge Lives from $account to $city retry 100" ]
>>     }
>>   ]}
>>
>>
>> Hope this new feature will simplify your development improving
>> performance.
>>
>> What about having more complex constructs like IF, FOR, etc? If you need
>> more complexity, I suggest you to use Javascript as language that already
>> support all these concepts.
>>
>> Lvc@
>>
>>
>> PS: For more information look at issues -> https://github.com/
>> orientechnologies/orientdb/issues/2176 and https://github.com/
>> orientechnologies/orientdb/issues/2056
>>
>>  --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "OrientDB" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to