QueryBuilder使用時の注意事項を以下に示します。
ダイアグラムペインの結合線で、FULL OUTER JOINとなるテーブル結合を指定しないてください。
表名や列名などに英小文字を含む場合、QueryBuilderを使用してSQL文を作成すると、二重引用符(")を付加できないためエラーになります。表名や列名などに英小文字を指定しないてください。
NCHAR型またはNVCHAR型の列に各国語文字列定数を指定する場合、定数の前にNを付けないでください。
SQLペインに記述したSQL文について、QueryBuilderのSQLペインで右クリックして表示される[SQL構文の確認]は利用できません。[SQL構文の確認]を選択するとエラーとなります。
関数を指定する場合、Symfoware Serverがサポートしている関数の記述形式ではエラーになる場合があります。QueryBuilderのSQLペインで入力する関数の形式については、下記の表を参考にしてください。
また、関数を指定する場合、パラメタに空白が含まれていると、自動生成されたSQL文には不当なシングルクォーテーションが付加されます。そのままクエリを実行するとエラーになりますので、SQLペインで、関数の形式を下表の“QueryBuilderで指定する関数の形式”に変更してください。
Symfoware Serverの関数の形式 | QueryBuilderで指定する関数の形式 |
---|---|
ADD_DATE(DATE'2006-08-28',6,'MONTH') | DATEADD(MONTH,6,DATE'2006-08-28') |
CAST('2012-10-01 11:34:56' AS timestamp) | CONVERT(datetime,'2012-10-01 11:34:56') |
CEIL(123.456) | CEILING(123.456) |
CHAR_LENGTH(RTRIM('ABあいう ')) | LEN('ABあいう ') |
CHR(78) | CHAR(78) |
CURRENT_TIMESTAMP | GETDATE() |
CURRENT_TIMESTAMP | SYSDATETIME() |
EXTRACT(YEAR FROM DATE'2006-08-01') | DATEPART(YEAR,DATE'2006-08-01') |
EXTRACT(DAY FROM DATE'2006-08-01') | DAY(DATE'2006-08-01') |
EXTRACT(MONTH FROM DATE'2006-08-01') | MONTH(DATE'2006-08-01') |
EXTRACT(YEAR FROM DATE'2006-08-01') | YEAR(DATE'2006-08-01') |
'Happy ' || 'Birthday ' || '11' || '/' || '25' | CONCAT ( 'Happy ', 'Birthday ', '11', '/', '25' ) |
LAST_DAY(DATE'2006-08-01') | EOMONTH(DATE'2006-08-01') |
LN(10) | LOG(10) |
LPAD(CAST(CAST(ROUND(123.4555,2) AS NUMERIC(18,2)) AS VARCHAR(6)),6) | STR(123.4555,6,2) |
OCTET_LENGTH(N'ABあいう ') | DATALENGTH('ABあいう ') |
POWER(10,2) | SQUARE(10) |
POSITION('vital' IN 'Reflectors are vital safety', 5) | CHARINDEX('vital','Reflectors are vital safety', 5) |
REPLICATE(' ',2) | SPACE(2) |
SPAN_DATE(DATE'2006-08-01',DATE'2007-09-20','YEAR') | DATEDIFF(YEAR,DATE'2006-08-01',DATE'2007-09-20') |
SUBSTRING('abcdefg' FROM 1 FOR 2) | LEFT('abcdefg',2) |
SUBSTRING('abcdefg' FROM CHARACTER_LENGTH('abcdefg')-2+1 FOR 2) | RIGHT('abcdefg',2) |
SUBSTRING('Symfoware' FROM 6 FOR 3) | SUBSTRING('Symfoware', 6 , 3) |
SUBSTRING('abcdef' FROM 1 FOR 2-1) || 'ijklmn' || SUBSTRING('abcdef' FROM 2+3) | STUFF('abcdef',2,3,'ijklmn') |
以下の関数は指定できません。構文エラーとなります。
OCTET_POSITION
OCTET_SUBSTRING
丸め位置を指定していないROUND
文字列長を指定していないSUBSTRING
FROMを指定したTRIM
Symfoware Serverの予約語であるデータオブジェクト名がクエリに含まれる場合、クエリを実行するとエラーになります。
Symfoware Serverの予約語は、“SQLリファレンス”の“キーワード一覧”を参照してください。
QueryBuilderでは、条件指定の値を定数または名前付きパラメタで指定できます。それぞれの注意事項を下記で説明します。
定数
日時データ型について、定数の形式が変更されます。
DATE/TIME/TIMESTAMP定数
指定したDATE/TIME/TIMESTAMP定数の形式がQueryBuilderで以下のとおり変更されます。変更された形式は、そのまま正常に実行できます。
指定した形式 | 変更された形式 |
---|---|
DATE `YY-MM-DD` | {d `YY-MM-DD`} |
TIME `hh:mm:ss` | {t `hh:mm:ss`} |
TIMESTAMP `YY-MM-DD hh:mm:ss` | {ts `YY-MM-DD hh:mm:ss`} |
INTERVAL定数
指定したINTERVAL定数のシングルクォーテーションの位置が、QueryBuilderで以下のとおり変更されます。変更された形式は、そのまま実行するとエラーになりますので、手動でシングルクォーテーションの位置を修正してください。
変更された形式 | 手動で修正した形式 |
---|---|
`INTERVAL 9 YEAR` | INTERVAL `9` YEAR |
名前付きパラメタ
SQLペインでは、以下のような名前付きパラメタを含むSQL文を使用できます。
例:SELECT C1,C2 FROM SC1.TB1 WHERE C1=:PARAM
名前付きパラメタを使用する場合、[クエリの実行]ボタンをクリックして、実行結果を確認するときに、以下の[クエリパラメーター]画面が表示されます。
[クエリパラメーター]画面で、名前付きパラメタの値を設定し、[OK]ボタンをクリックすると、結果ペインに実行結果が表示できます。
名前付きパラメタのバインド時に指定するデータの形式は、定数で指定する形式とは異なります。
下記の表で説明します。
データ型 | 定数で指定する形式 | 名前付きパラメタに指定するデータの形式 |
---|---|---|
INTERVAL YEAR | INTERVAL '20' YEAR | 20 |
INTERVAL YEAR TO MONTH | INTERVAL '20-11' YEAR TO MONTH | 20-11 |
INTERVAL MONTH | INTERVAL '20' MONTH | 20 |
INTERVAL DAY | INTERVAL '20' DAY | 20 |
INTERVAL DAY TO HOUR | INTERVAL '20 10' DAY TO HOUR | 20 10 |
INTERVAL DAY TO MINUTE | INTERVAL '20 10:20' DAY TO MINUTE | 20 10:20 |
INTERVAL DAY TO SECOND | INTERVAL '20 10:20:30' DAY TO SECOND | 20 10:20:30 |
INTERVAL HOUR | INTERVAL '10' HOUR | 10 |
INTERVAL HOUR TO MINUTE | INTERVAL '10:20' HOUR TO MINUTE | 10:20 |
INTERVAL HOUR TO SECOND | INTERVAL '10:30:20' HOUR TO SECOND | 10:30:20 |
INTERVAL MINUTE | INTERVAL '10' MINUTE | 10 |
INTERVAL MINUTE TO SECOND | INTERVAL '10:20' MINUTE TO SECOND | 10:20 |
INTERVAL SECOND | INTERVAL '10' SECOND | 10 |
DATE | DATE '2012-07-18' | 2012-07-18 |
TIME | TIME '17:00:00' | 指定不可(注) |
TIMESTAMP | TIMESTAMP '2012-07-18 17:00:00' | 2012-07-18 17:00:00 |
CHAR(10) | 'abc' | Abc |
VARCHAR(10) | 'abc' | Abc |
注) TableAdapterではTIME型の名前付きパラメタを使用できません。詳細は“3.2.5 アプリケーションからのTableAdapterの利用”にある注意事項を参照してください。