用 PL/SQL Developer 列出一个 Package 来,可以看到有
Functions
Procedures
Types
....
Synonyms等,看到其中有一个 Synonyms 同义词,请问一下,如何在包中创建同义词,而不用创建全局的同义词创建语句应该如何写?谢谢!

解决方案 »

  1.   

    比如一个包名是 sample_pkg怎么写语句在这个包内创建同义词
      

  2.   

    在包体内,用动态语句,可以在包体的初始化部分写:
    create or replace package body PKG_TEST is  -- Private type declarations
      type <TypeName> is <Datatype>;
      
      -- Private constant declarations
      <ConstantName> constant <Datatype> := <Value>;  -- Private variable declarations
      <VariableName> <Datatype>;  -- Function and procedure implementations
      function <FunctionName>(<Parameter> <Datatype>) return <Datatype> is
        <LocalVariable> <Datatype>;
      begin
        <Statement>;
        return(<Result>);
      end;begin
      -- Initialization
      execute immediate 'create public synonym s1 for test.test_num';
    end PKG_TEST;
    -------
    execute immediate 'create public synonym s1 for test.test_num';  不知道是否这个意思。
      

  3.   

    会报错啊Compilation errors for PACKAGE BODY HAND2.TEST_PKGError: PLS-00103: 出现符号"IMMEDIATE"在需要下列之一时:
           :=.(@%;
           符号":=在"IMMEDIATE"继续之前已插入。
    Line: 28
    Text: execute immediate 'create public synonym SPD_PC_INTERFACE  for [email protected]';这个同义词是可以单独创建的,可放到包里就会有这个错误