package Ġorg . part i ql . lang . eval . builtins . stored procedure Ċ Ċ import Ġorg . part i ql . lang . eval . Evalu ating Compiler Ċ import Ġorg . part i ql . lang . eval . Evaluation Session Ċ import Ġorg . part i ql . lang . eval . Expr Function Ċ import Ġorg . part i ql . lang . eval . Expr Value Ċ import Ġorg . part i ql . lang . eval . Expression Ċ Ċ /** Ċ Ġ* ĠA Ġtyped Ġversion Ġof Ġa Ġstored Ġprocedure Ġsignature . ĠThis Ġsignature Ġincludes Ġthe Ġstored Ġprocedure 's Ġ[ name ] Ġand Ġ[ arity ]. Ċ Ġ*/ Ċ data Ġclass ĠStored Procedure Signature ( val Ġname : ĠString , Ġval Ġar ity : ĠInt Range ) Ġ{ ĊĠĠĠ Ġconstructor ( name : ĠString , Ġar ity : ĠInt ) Ġ: Ġthis ( name , Ġ( arity .. arity )) Ċ } Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġstored Ġprocedure Ġthat Ġcan Ġbe Ġinvoked . Ċ Ġ* Ċ Ġ* ĠStored Ġprocedures Ġdiffer Ġfrom Ġfunctions Ġ( i . e . Ġ[ Expr Function ]) Ġin Ġthat : Ċ Ġ* Ġ 1 . Ġstored Ġprocedures Ġare Ġallowed Ġto Ġhave Ġside - effects Ċ Ġ* Ġ 2 . Ġstored Ġprocedures Ġare Ġonly Ġallowed Ġat Ġthe Ġtop Ġlevel Ġof Ġa Ġquery Ġand Ġcannot Ġbe Ġused Ġas Ġan Ġ[ Expression ] Ġ( i . e . Ġstored Ċ Ġ* ĠĠĠ Ġprocedures Ġcan Ġonly Ġbe Ġcalled Ġusing Ġ` EXEC Ġs proc Ġ' arg 1 ', Ġ' arg 2 '` Ġand Ġcannot Ġbe Ġcalled Ġfrom Ġqueries Ġsuch Ġas Ċ Ġ* ĠĠĠ Ġ` SELECT Ġ* ĠFROM Ġ( EXEC Ġs proc Ġ' arg 1 ', Ġ' arg 2 ')` Ċ Ġ*/ Ċ interface ĠStored Procedure Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Stored Procedure Signature ] Ġrepresenting Ġthe Ġstored Ġprocedure 's Ġname Ġand Ġar ity Ġto Ġbe Ġreferenced Ġin Ġstored ĊĠĠĠĠ Ġ* Ġprocedure Ġcalls . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsignature : ĠStored Procedure Signature ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInv okes Ġthe Ġstored Ġprocedure . ĠPro per Ġar ity Ġis Ġchecked Ġby Ġthe Ġ[ Evalu ating Compiler ], Ġbut Ġargument Ġtype Ġchecking ĊĠĠĠĠ Ġ* Ġis Ġleft Ġto Ġthe Ġimplementation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsession Ġthe Ġcalling Ġenvironment Ġsession ĊĠĠĠĠ Ġ* Ġ@ param Ġargs Ġargument Ġlist Ġsupplied Ġto Ġthe Ġstored Ġprocedure ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcall ( session : ĠEvaluation Session , Ġargs : ĠList < Expr Value >): ĠExpr Value Ċ }