CREATE PROCEDURE procname(parameter_list) characteristics language
code_body
CREATE PROC procname(parameter_list) characteristics language
code_body| 生成するストアド・プロシージャの名前。 識別子 です。このプロシージャ名は、修飾されていない場合 (StoreName) または修飾されている場合 (Patient.StoreName) があります。パラメータが指定されない場合でも、 |
|
| プロシージャのプログラム・コード SQL プログラム・コードの開始には BEGIN キーワードが使用され、その終了には END キーワードが使用されます。 Caché ObjectScript プログラム・コードは中括弧で囲まれます。 |
CREATE PROCEDURE UpdatePay (IN Salary FLOAT DEFAULT '0', IN Name VARCHAR(50), INOUT PayBracket VARCHAR(50) DEFAULT 'NULL') BEGIN UPDATE Sample.Person SET Salary = :Salary WHERE Name=:Name ; END
| メソッド・キーワード | 意味 |
|---|---|
| FOR |
メソッドを生成するクラス名を指定します。そのクラスが存在しない場合は、新規作成します。メソッド名を修飾することにより、クラス名を指定することもできます。FOR 節で指定されたクラス名が、メソッド名の修飾により指定されたクラス名にオーバーライドされます。 |
| FINAL | サブクラスがメソッドをオーバーライドできないことを指定します。デフォルトでは、メソッドは最終ではありません。FINAL キーワードは、サブクラスによって継承されます。 |
| PRIVATE | メソッドがそれ自身のクラス、またはサブクラスの他のメソッドによってのみ起動できることを指定します。デフォルトではメソッドはパブリックで、制限なしに起動できます。この制限はサブクラスによって継承されます。 |
| RETURNS |
メソッドに対する呼び出しによって返される値のデータ型を指定します。RETURNS が省略されると、メソッドは値を返すことができません。この仕様はサブクラスによって継承されます。 |
| SELECTMODE |
メソッドのコンパイルに使用されるモードを指定します。使用可能な値は、LOGICAL、ODBC、RUNTIME、DISPLAY です。既定は LOGICAL です。 |
| クエリ・キーワード | 概要 |
|---|---|
| CONTAINID |
フィールドが存在する場合は、どのフィールドが ID を返すか指定します。 CONTAINID を ID を返すコラムの番号に設定するか、または ID を返す列が存在しない場合は 0 を設定します。 Caché は、名前の付いたフィールドが実際に ID を含むことを認証しないため、非一貫性データでユーザ・エラーが発生します。 |
| FOR |
メソッドを生成するクラス名を指定します。そのクラスが存在しない場合は、新規作成します。メソッド名を修飾することにより、クラス名を指定することもできます。FOR 節で指定されたクラス名が、メソッド名の修飾により指定されたクラス名にオーバーライドされます。 |
| FINAL | サブクラスがメソッドをオーバーライドできないことを指定します。デフォルトでは、メソッドは最終ではありません。FINAL キーワードは、サブクラスによって継承されます。 |
| RESULTS |
データ・フィールドをクエリで返された別のフィールドへ指定します。各フィールドでは、列名、データ型 (デフォルトで属性に割り当てられたタイプと異なる場合)、そしてオプションとして見出しを指定します。これらフィールドの特性はコロンで区切ります。結果セット内の異なるフィールドはコンマで区切ります。 LANGUAGE SQL の場合、クエリが SELECT * でない限り RESULTS キーワードを省略することができます。RESULTS キーワードを省略する場合、ROWSPEC はクラス・コンパイル中に自動生成します。 |
| SELECTMODE |
クエリをコンパイルするために使用するモードを指定します。使用可能な値は、LOGICAL、ODBC、RUNTIME、DISPLAY です。デフォルトは RUNTIME です。 |
WRITE !,"Creating a procedure" &sql(CREATE PROCEDURE PersonStateSP() BEGIN SELECT Name,Home_State FROM Sample.Person ; END) IF SQLCODE=0 { WRITE !,"Created a procedure" } ELSEIF SQLCODE=-361 { WRITE !,"Procedure already exists" } ELSE { WRITE !,"SQL error: ",SQLCODE }
WRITE !,"Deleting a procedure" &sql(DROP PROCEDURE SAMPLES.PersonStateSP) IF SQLCODE=0 { WRITE !,"Deleted a procedure" } ELSEIF SQLCODE=-362 { WRITE !,"Procedure did not exist" } ELSE { WRITE !,"SQL error: ",SQLCODE }
CREATE PROCEDURE UpdateSalary ( IN SSN VARCHAR(11), IN Salary FLOAT ) FOR Sample.Employee BEGIN UPDATE Sample.Employee SET Salary = :Salary WHERE SSN = :SSN; END
CREATE PROCEDURE Sample_Employee.GetTitle( INOUT pHandle %SQLProcContext, IN SSN VARCHAR(11), INOUT Title VARCHAR(50) ) RETURNS VARCHAR(30) FOR Sample.Employee LANGUAGE OBJECTSCRIPT { NEW SQLCODE,%ROWCOUNT &sql(SELECT Title INTO :Title FROM Sample.Employee WHERE SSN = :SSN) IF $GET(pHandle)'=$$$NULLOREF { SET pHandle.SQLCode=SQLCODE SET pHandle.RowCount=%ROWCOUNT } QUIT }
| Copyright © 1997-2005, InterSystems Corp. | Last updated: 2005-05-26 15:11:48 | Source: RSQL_createprocedure.xml |