[
https://issues.apache.org/jira/browse/DERBY-4566?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12837957#action_12837957
]
Sylvain Leroux commented on DERBY-4566:
---------------------------------------
>From the user point of view, this would require a new SET statement
>defining/setting a variable to the result of an other ij statement:
SET position AS GETCURRENTROWNUMBER my_cursor;
SET table_list AS SHOW TABLE;
SET stmt_result AS EXECUTE my_prepared_statement;
The variable could then later be used in any place where an ij statement accept
some value:
ABSOLUTE position my_cursor;
EXECUTE 'INSERT INTO Audit VALUES(?,?,?)' USING table_list;
As a further improvement, variable could be indexed in order to access to
individual columns:
EXECUTE 'INSERT INTO Audit(tbl) VALUES(?)' USING table_list[2];
or even
EXECUTE 'INSERT INTO Audit(tbl) VALUES(?)' USING table_list["TABLE_NAME"];
----
Now, for the insights. As a starting point, every statement in ij returns an
ijResult instance. But this is a fat-interface that requires the client code to
be able to handle several different data types.
In order to work uniformly with any statement result, an interface with a
simple and unique contract would be definitivly easier to work with. I'm not
quite sure what should be the best: a rewrite of ijResult (and ijResultImpl) or
introducing a new interface for that purpose.
Yet, here are methods of ijResult allowing to discriminate between the
different data types:
boolean isConnection();
boolean isStatement();
boolean isResultSet() throws SQLException;
boolean isUpdateCount() throws SQLException;
boolean isNextRowOfResultSet();
boolean isVector();
boolean isMulti();
boolean isException();
boolean isMultipleResultSetResult();
It worth to notice that these methods are only used by
org.apache.derby.impl.tools.ij.utilMain.displayResult(LocalizedOutput,
ijResult, Connection) and the values end up in the several
org.apache.derby.tools.JDBCDisplayUtil.display_XXXX methods. Moreover this
interface is package private. For these reasons, I feel like changing the
ijResult interface seems to be a reasonable option to start with.
All comments and ideas are welcome!
Sylvain.
> Make it possible to define variables in ij
> ------------------------------------------
>
> Key: DERBY-4566
> URL: https://issues.apache.org/jira/browse/DERBY-4566
> Project: Derby
> Issue Type: Improvement
> Components: Tools
> Reporter: Sylvain Leroux
> Assignee: Sylvain Leroux
>
> It would be nice to have a way in ij to store statement results in variables
> for later re-use.
> Notably, It would allow to use (meta)data obtained by some statements (such
> as SHOW ....) beyond the simple display of the result. Moreover, it could be
> a first step toward extending the scripting capabilities of ij.
> See http://old.nabble.com/IJ-scripting-(variables-in-IJ-)-td27290712.html
> Related to DERBY-4557
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.