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

时间:2016-03-30 16:20:31

标签: plsql

我在表'Company'中填充了多个元组/行。其中一个是Microsoft 'Company_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;

我收到了这个错误,我不明白它试图告诉我什么。当然我们遇到了选择。

我正在运行Oracle风格。

  

错误(12,1):PLS-00103:遇到符号" SELECT"

显示错误的查询结果也应该有所帮助。

  

ORA-06575:包或函数COMPANY_LOCATION_CITY处于无效状态   06575. 00000 - "包或函数%s处于无效状态"   *原因:SQL语句引用了一个PL / SQL函数              无效的状态。 Oracle试图编译该函数,但是              检测到错误。   *操作:检查SQL语句和PL / SQL函数的语法              a的错误或错误分配或缺失的权限              引用对象。   行错误:16列:8

Ran in Oracle Sql Developer in the Worksheet Window

1 个答案:

答案 0 :(得分:1)

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