Plsql SQL-PL/SQL编写一个基本函数并运行它来查询结果

Plsql SQL-PL/SQL编写一个基本函数并运行它来查询结果,plsql,Plsql,我用多个元组/行填充了表'Company'。其中一个是Microsoft,用于'Company\u name'字段,而'City'字段填充为Redmond 我已经编译了这个PL/SQL文件 --创建一个函数,返回公司X所在的城市。 --X将是调用者提供的参数。 --与您选择的公司一起测试您的功能 CREATE OR REPLACE FUNCTION company_location_city(x IN company.company_name%TYPE) return company.city%

我用多个元组/行填充了表
'Company'
。其中一个是Microsoft,用于
'Company\u name'
字段,而
'City'
字段填充为Redmond

我已经编译了这个PL/SQL文件

--创建一个函数,返回公司X所在的城市。
--X将是调用者提供的参数。
--与您选择的公司一起测试您的功能

CREATE OR REPLACE FUNCTION company_location_city(x IN company.company_name%TYPE)
return company.city%TYPE IS
  company_location company.city%TYPE;
BEGIN
  select city into company_location
  from company 
  where company_name = x;

  return company_location;
END;
并用这条线运行它

select company_location_city('Microsoft') from dual;
我得到了这个错误,我不明白它想告诉我什么。当然我们遇到了选择

我运行的是甲骨文风格

错误(12,1):PLS-00103:遇到符号“选择”

此外,显示错误的查询结果也会有所帮助

ORA-06575:包或功能公司\u位置\u城市处于无效状态 657500000-“包或函数%s处于无效状态” *原因:SQL语句引用的PL/SQL函数位于 无效状态。Oracle试图编译该函数,但是 检测到错误。 *操作:检查SQL语句和PL/SQL函数的语法 错误、错误分配或缺少的权限 引用的对象。 第16行第8列出错


错误的PLS前缀表示这是pl\sql引擎错误。因此,这意味着您的sql代码被视为pl\sql,因为函数ddl code是pl\sql。您混合了sql和pl/sql,您应该按分隔符拆分它们,或者删除其中一种类型的代码

您得到了pl\sql错误,但运行了sql查询。您是如何运行此查询的?我的意思是你用过IDE或者sqlplus吗?我用的是IDE。Sql开发者。Oracle Sql开发者?所以您应该在SQL工作表窗口中运行查询。你这样做了吗?是的,我给了你一张图片来帮助你。另外,当我运行select语句时,它作为查询结果给出了一个错误。不确定它是什么意思。或者在函数ddl代码和sql查询之间添加斜杠分隔符。您已经混合了sql和pl/sql,应该按分隔符拆分它们。