A no parameter function that returns a string
Create a no parameter Function using a SQL Plus window:
SQL> edit
Wrote file afiedt.buf
1 CREATE OR REPLACE FUNCTION myNoParamFunction RETURN VARCHAR2 IS
2 BEGIN
3 RETURN 'JimmyJoe says, myNoParamFunction Function';
4* END;
SQL> /
Function created.
Call the function:
SQL> set serveroutput on
SQL> edit
Wrote file afiedt.buf
1 DECLARE
2 v_returnVal VARCHAR2(50);
3 BEGIN
4 v_returnVal := myNoParamFunction;
5 DBMS_OUTPUT.PUT_LINE('v_returnVal = ' || v_returnVal);
6* END;
SQL> /
The last forward slash executes the above SQL. The results of executing the above code are:
v_returnVal = JimmyJoe says, myNoParamFunction Function
PL/SQL procedure successfully completed.
Call the function from Smalltalk:
"Setup the connection"
(AbtDatabaseConnectionSpec forDbmClass: AbtOracle10DatabaseManager databaseName: 'orcl') connect.
connection := AbtDbmSystem activeDatabaseConnection
flushCache;
autoCommit: true;
commitUnitOfWork;
yourself.
"Variable names"
funcName := 'myNoParamFunction'.
returnValueName := 'return_value_str'.
"Return type"
inOutParams := AbtCompoundType new
addField: (AbtOracleVarCharField new
name: returnValueName;
count: 100).
"Value returned"
aDict := Dictionary new.
aDict at: returnValueName put: String new.
"Function spec"
functionSpec := AbtFunctionSpec new
functionName: funcName;
useSqlCall: true;
parameters: inOutParams.
"Invoke the function"
resultSet := connection invokeFunctionSpec: functionSpec withInputDictionary: aDict.
resultSet
The result of inspecting the above script is:
Last modified date: 06/01/2018