SQL错误00905. 00000 - "缺少关键字"

时间:2017-01-19 09:14:09

标签: oracle plsql keyword

我正在尝试执行此查询;

Process process = new Process();
process.StartInfo.FileName = "Scripts\\Install.bat";
process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
process.StartInfo.CreateNoWindow = false;
process.StartInfo.UseShellExecute = false;
process.Start();

我收到了以下错误:

  

从命令行中的3开始出错 - 在TYPE上授予SELECT   PPZ_C.BTS_BAUTEIL_STATION_INFO到PPZ_W错误报告 - ORA-00905:   缺少关键字   00905. 00000 - "缺少关键字"   *原因:
  *操作:

有谁知道我错过了哪个关键字?

2 个答案:

答案 0 :(得分:3)

首先,您需要删除TYPE。这将解决您的第一部分问题。 试试这个 Grant SELECT on PPZ_C.BTS_BAUTEIL_STATION_INFO to PPZ_W

现在执行上述操作时,您将进一步收到错误:

  

ORA-02305:只有EXECUTE,DEBUG和UNDER权限才有效   类型

这意味着您无法在任何select上授予type。只有EXECUTE,DEBUG和UNDER权限才对类型有效。

因此,当您希望在select语句中使用EXECUTE时,可以使用Grant EXECUTE on PPZ_C.BTS_BAUTEIL_STATION_INFO to PPZ_W;

SELECT ppz_bts.na_stat_anf( PPZ_C.BTS_BAUTEIL_STATION_INFO ('','IG','12345679') ) FROM dual;

编辑: 您的select语句应为:

CREATE OR REPLACE TYPE myschema.array_t is varray(2) of number ; 

---Running in My schema
SQL> select * from table(array_t('1','2'));

COLUMN_VALUE
------------
           1
           2

--Granted from myschema to otherschema
SQL> grant execute on  myschema.array_t to othersschema ;

--Running in otherschema

SQL> select * from table(myschema.array_t('1','2'));

COLUMN_VALUE
------------
           1
           2

参见演示:

Failed to create the Android application <C: \ My Mobile Projects \ My_AndreamProject \ Exe \ My_Project_Android.apk>.


Command line: "C: \ Program Files \ Java \ jdk1.8.0_72 \ bin \ java.exe" "-Dorg.gradle.appname = C: \ My Mobile Projects \ My_Project_Android \ Android \ Generation" -classpath "C: \ Gradle \ lib \ gradle-launcher.jar "org.gradle.launcher.GradleMain assembleDebug -b build.gradle


Returned error:
Org.gradle.api.internal.classpath.UnknownModuleException: Can not locate JAR for 'gradle-launcher' module IN distribution directory 'C: \ gradle'.
At org.gradle.api.internal.classpath.DefaultModuleRegistry.loadModule (DefaultModuleRegistry.java:108)
At org.gradle.api.internal.classpath.DefaultModuleRegistry.getModule (DefaultModuleRegistry.java:77)
At org.gradle.api.internal.DefaultClassPathProvider.findClassPath (DefaultClassPathProvider.java:33)
At org.gradle.api.internal.DefaultClassPathRegistry.getClassPath (DefaultClassPathRegistry.java:34)
At org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit (ProcessBootstrap.java:49)
At org.gradle.launcher.bootstrap.ProcessBootstrap.run (ProcessBootstrap.java:37)
At org.gradle.launcher.GradleMain.main (GradleMain.java:23)

答案 1 :(得分:2)

当Oracle收到类型信息请求时,它会在提供请求的信息之前验证请求者是否具有该类型的EXECUTE特权。 试试这个:

Grant EXECUTE on PPZ_C.BTS_BAUTEIL_STATION_INFO to PPZ_W; 

然后尝试:

SELECT ppz_bts.na_stat_anf( PPZ_C.bts_bauteil_station_info('','IG','12345679') ) 
FROM dual;