0

Apache Derby Embedded DB に対して次のクエリを実行しようとしています。

ProjectName 、 CompaignNumber 、JobNumber を arcproject から選択します。Projectname
は「%」のように、CompaignNumber は「%」のように、または JobNumber は「%」のようにします

しかし、それは次のエラーを作成します

ERROR: No authorized routine named 'LIKE' of type 'FUNCTION'
having compatible arguments was found.
Error Code: 30000

何が問題なのか理解できません。

4

3 に答える 3

0

まず、返信ありがとうございます。今、私はすべての詳細を送信しています(以下のクエリは作業中のクエリです)。

まず、クエリでテーブルを作成しました

CREATE TABLE "APP"."ARCPROJECT"( PROJECTNAME VARCHAR PRIMARY KEY not null, COMPAIGNNUMBER VARCHAR default 'NULL', JOBNUMBER INTEGER default 'NULL', RESPONSIBLEPERSON VARCHAR not null, PROJECTSTARTDATE DATE default 'NULL', PROJECTENDDATE DATE default 'NULL')

次に、値を挿入しました

insert into "APP"."ARCPROJECT" (PROJECTNAME, COMPAIGNNUMBER, JOBNUMBER, RESPONSIBLEPERSON, PROJECTSTARTDATE, PROJECTENDDATE) 値 ('proje-1', 'cmp-123', 89, 'person-xyz', '2012-12-8 ', '2013-12-8');

次に、このクエリを試すと、上記と同じエラーが発生しました。

ProjectName 、 CompaignNumber 、JobNumber、Responsibleperson、ProjectStartDate、projectEndDate を arcproject から選択します。Projectname は '%' のように、CompaignNumber は '%' のように、または JobNumber は '%' のように、または Responsibleperson は '%' のように選択します。

注 : OR 式を 2 つだけ使用すると (たとえば、「'%' のような Projectname または '%' のような CompaignNumber」)、問題なく動作しますが、別の OR 式を追加すると、前述のエラー メッセージが表示され始めます。

于 2012-12-18T16:32:49.330 に答える
0

質問にプログラムの正確な構文が含まれていなかったと思われます。クエリをカットアンドペーストして Derby に貼り付けたところ、問題なく動作したからです。

ij> create table arcproject (ProjectName varchar(10),CompaignNumber varchar(10),JobNumber varchar(10));
0 rows inserted/updated/deleted
ij> insert into arcproject values ('a','b','c');
1 row inserted/updated/deleted
ij> select ProjectName , CompaignNumber ,JobNumber from arcproject where Projectname like '%' OR CompaignNumber like '%' OR JobNumber like '%';
PROJECTNA&|COMPAIGNN&|JOBNUMBER
--------------------------------
a         |b         |c

質問をするときは、特に構文エラーについて質問する場合は、使用した正確な構文を含め、すべての詳細を含めることが重要です。

于 2012-12-18T16:06:44.743 に答える
0

更新ありがとうございます。それは今より明確です。

Derby のどのバージョンを使用していますか? CREATE TABLE ステートメントをそのまま実行できませんでした。2 つの変更を行う必要がありました。1) 「VARCHAR」を「VARCHAR(10)」に変更する必要がありました。2) 「INTEGER デフォルト 'NULL'」を「INTEGER デフォルト 0」に変更する必要がありました。

これら 2 つの変更を行った後、説明したメッセージが表示されます。

問題は、INTEGER として宣言した JOBNUMBER 列にあります。

「INTEGER」列では「LIKE」を使用できません。文字列でのみ機能します

SELECT ステートメントを "JobNumber like '%'" から "JobNumber != 0" に変更すると、ステートメントは正常に機能します。

メッセージがあまり明確ではないことに同意します。メッセージを改善するために、Derby プロジェクトでイシューを開く予定です。

この問題の結果は、https ://issues.apache.org/jira/browse/DERBY-6020 で確認できます。

于 2012-12-19T21:16:12.710 に答える