2016-11-24 12 views
0

これは単純な修正であることを私に許してください。私はSQLにはかなり慣れています。だから私は、機能の実験をして、このようなユーザーにはOracle SQL開発者が存在しません

CREATE FUNCTION CHINOOKHW.AddPara(@a1 int, @b2 int) 
RETURN INT 
BEGIN AS 
    DECLARE @C3 INT = SUM(A1, B2) 
    RETURN @C3 
END 
GO 
CHINOOKHW.AddPara(1, 2); 

としてそれをテストするための簡単なものを作ったが、私はすでに

CREATE USER chinookhw 
IDENTIFIED BY p4ssw0rd; 

としての私のユーザーが定義されているエラー

Error report - 
ORA-01435: user does not exist 
01435. 00000 - "user does not exist" 
*Cause:  
*Action: 

を取得していますそして、私はこれが通常悪い習慣であることを知っていますが、私はユーザーにもすべてのアクセスを与えました。

GRANT ALL PRIVILEGES to chinookhw IDENTIFIED BY p4ssw0rd; 

私はこれが関連しているかどうかわからないが、私 https://chinookdatabase.codeplex.com/

からチヌークデータベースに接続して、私はライン

GRANT DBA TO chinook; 
GRANT DBA TO chinookhw; 
commit; 

とシステムデータベースから別の接続をしたが、誰もが私に何を伝えることができます私は間違っている?私は何時間もこの問題を解決していませんでした。事前にありがとう

+2

これは、Oracle構文ではありません... [ドキュメント](HTTPから開始します。構文は、PL/SQLはなくT-SQLであるか、それはあなたがあなたの書いたが何であれ、またどのように注意してください。 oracle.com/database/121/LNPLS/create_function.htm#LNPLS01370) – Aleksej

+1

[Oracle PL/SQLリファレンス](https://docs.oracle.com/database/121/LNPLS/toc.htm)でその構文を見つけるか? –

+0

機能を作成しようとするとCHINOOKHWとして接続されていますか? (他の人が指摘したように、それは有効なPL/SQL構文ではなく、コンパイルを試みる時点まで到達できれば構文エラーが発生します。) – Boneist

答えて

0

以下を試してください - 関数を作成するユーザーを指定していないことに注意してください。 //ドキュメント:

CREATE FUNCTION AddPara(a1 integer, b2 integer) 
RETURN INTeger 
AS 
BEGIN 
    return A1 + B2; 
END; 
/
+0

と書かれた例があります。追加するつもりだったのですが、どのユーザーがその関数を所有しているのか興味深いでしょう。 'select * from dba_objects where object_name = 'ADDPARA';'。 – Boneist

+0

実際に私はそれを理解しました。私のファイルには100行以上のコードがあり、存在しない別のユーザーによって定義された別の機能がありました。私はとても馬鹿だと感じる。 – anonuser1234

+0

世界に同じような間違いをしていない開発者は生きていません!自分自身が\ *ホイッスル\ *を含む – Boneist

関連する問題