001: /*
002:
003: Derby - Class org.apache.derby.iapi.sql.execute.ExecPreparedStatement
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.iapi.sql.execute;
023:
024: import org.apache.derby.iapi.services.loader.GeneratedClass;
025:
026: import org.apache.derby.iapi.error.StandardException;
027:
028: import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
029:
030: import org.apache.derby.iapi.sql.PreparedStatement;
031: import org.apache.derby.iapi.sql.ResultColumnDescriptor;
032:
033: import java.util.List;
034:
035: /**
036: * Execution extends prepared statement to add methods it needs
037: * for execution purposes (that should not be on the Database API).
038: *
039: * @author ames
040: */
041: public interface ExecPreparedStatement extends PreparedStatement {
042:
043: /**
044: * set the statement text
045: *
046: * @param txt the source text
047: */
048: void setSource(String txt);
049:
050: /**
051: * Get the Execution constants. This routine is called at Execution time.
052: *
053: * @return ConstantAction The big structure enclosing the Execution constants.
054: */
055: ConstantAction getConstantAction();
056:
057: /**
058: * Get a saved object by number. This is called during execution to
059: * access objects created at compile time. These are meant to be
060: * read-only at run time.
061: *
062: * @return Object A saved object. The caller has to know what
063: * it is requesting and cast it back to the expected type.
064: */
065: Object getSavedObject(int objectNum);
066:
067: /**
068: * Get all the saved objects. Used for stored prepared
069: * statements.
070: *
071: * @return Object[] the saved objects
072: */
073: Object[] getSavedObjects();
074:
075: /**
076: * Get the saved cursor info. Used for stored prepared
077: * statements.
078: *
079: * @return Object the cursor info
080: */
081: Object getCursorInfo();
082:
083: /**
084: * Get the class generated for this prepared statement.
085: * Used to confirm compatability with auxilary structures.
086: *
087: * @exception StandardException on error obtaining class
088: * (probably when a stored prepared statement is loading)
089: */
090: GeneratedClass getActivationClass() throws StandardException;
091:
092: /**
093: * Mark the statement as unusable, i.e. the system is
094: * finished with it and no one should be able to use it.
095: */
096: void finish(LanguageConnectionContext lcc);
097:
098: /**
099: * Does this statement need a savpoint
100: *
101: * @return true if needs a savepoint
102: */
103: boolean needsSavepoint();
104:
105: /**
106: * Get a new prepared statement that is a shallow copy
107: * of the current one.
108: *
109: * @return a new prepared statement
110: *
111: * @exception StandardException on error
112: */
113: public ExecPreparedStatement getClone() throws StandardException;
114:
115: /* Methods from old CursorPreparedStatement */
116:
117: /**
118: * the update mode of the cursor
119: *
120: * @return The update mode of the cursor
121: */
122: int getUpdateMode();
123:
124: /**
125: * the target table of the cursor
126: *
127: * @return target table of the cursor
128: */
129: ExecCursorTableReference getTargetTable();
130:
131: /**
132: * the target columns of the cursor; this is a superset of
133: * the updatable columns, describing the row available
134: *
135: * @return target columns of the cursor as an array of column descriptors
136: */
137: ResultColumnDescriptor[] getTargetColumns();
138:
139: /**
140: * the update columns of the cursor
141: *
142: * @return update columns of the cursor as a string of column names
143: */
144: String[] getUpdateColumns();
145:
146: /**
147: * set this parepared statement to be valid
148: */
149: void setValid();
150:
151: /**
152: * Indicate that the statement represents an SPS action
153: */
154: void setSPSAction();
155:
156: /**
157: * @return the list of permissions required to execute this statement. May be null if
158: * the database does not use SQL standard authorization
159: */
160: List getRequiredPermissionsList();
161: }
|