Exemple #1
0
  private String buildProcedureOptions(Procedure procedure) {
    StringBuilder options = new StringBuilder();
    addCommonOptions(options, procedure);

    if (procedure.getUpdateCount() != Procedure.AUTO_UPDATECOUNT) {
      addOption(options, UPDATECOUNT, procedure.getUpdateCount());
    }

    if (!procedure.getProperties().isEmpty()) {
      for (String key : procedure.getProperties().keySet()) {
        addOption(options, key, procedure.getProperty(key, false));
      }
    }

    return options.toString();
  }
Exemple #2
0
  @Test
  public void testVirtualProcedure() throws Exception {
    String ddl =
        "CREATE VIRTUAL PROCEDURE myProc(OUT p1 boolean, p2 varchar, INOUT p3 decimal) "
            + "RETURNS (r1 varchar, r2 decimal) "
            + "OPTIONS(RANDOM 'any', UUID 'uuid', NAMEINSOURCE 'nis', ANNOTATION 'desc', UPDATECOUNT '2') "
            + "AS /*+ cache */ BEGIN select * from foo; END";

    Schema s = helpParse(ddl, "model").getSchema();

    Procedure proc = s.getProcedure("myProc");
    assertNotNull(proc);

    assertTrue(proc.isVirtual());
    assertFalse(proc.isFunction());

    assertEquals(3, proc.getParameters().size());
    assertEquals("p1", proc.getParameters().get(0).getName());
    assertEquals("boolean", proc.getParameters().get(0).getDatatype().getName());
    assertEquals(ProcedureParameter.Type.Out, proc.getParameters().get(0).getType());

    assertEquals("p2", proc.getParameters().get(1).getName());
    assertEquals("string", proc.getParameters().get(1).getDatatype().getName());
    assertEquals(ProcedureParameter.Type.In, proc.getParameters().get(1).getType());

    assertEquals("p3", proc.getParameters().get(2).getName());
    assertEquals("bigdecimal", proc.getParameters().get(2).getDatatype().getName());
    assertEquals(ProcedureParameter.Type.InOut, proc.getParameters().get(2).getType());

    ColumnSet<Procedure> ret = proc.getResultSet();
    assertNotNull(ret);
    assertEquals(2, ret.getColumns().size());
    assertEquals("r1", ret.getColumns().get(0).getName());
    assertEquals("string", ret.getColumns().get(0).getDatatype().getName());
    assertEquals("r2", ret.getColumns().get(1).getName());
    assertEquals("bigdecimal", ret.getColumns().get(1).getDatatype().getName());

    assertEquals("uuid", proc.getUUID());
    assertEquals("nis", proc.getNameInSource());
    assertEquals("desc", proc.getAnnotation());
    assertEquals(2, proc.getUpdateCount());
    assertEquals("any", proc.getProperties().get("RANDOM"));

    assertEquals("/*+ cache */ BEGIN\nSELECT * FROM foo;\nEND", proc.getQueryPlan());
  }