【问题标题】:How to create SQL function with JDBC?如何使用 JDBC 创建 SQL 函数?
【发布时间】:2012-04-13 06:02:23
【问题描述】:

我想用 JDBC 创建 SQL 函数

CREATE OR REPLACE FUNCTION TEST."TO_STRING"(
nt_in in ntt_varchar2, 
delimiter_in IN VARCHAR2 DEFAULT ',')
return varchar2 is
v_idx PLS_INTEGER;
v_str varchar2(32767);
v_dlm VARCHAR2(10);
v_length NUMBER;
v_max_size NUMBER;
begin  
v_dlm := delimiter_in;
v_idx := nt_in.FIRST;

v_max_size :=2000;
WHILE v_idx IS NOT NULL LOOP
  IF (nvl(length(v_str),0) + length(v_dlm) + length(nt_in(v_idx))) > v_max_size THEN 
    if  v_str is null then
      v_str := substr(nt_in(v_idx), 0, v_max_size);
    else
      v_str := v_str || v_dlm || substr(nt_in(v_idx), 0, v_max_size - length(v_str) - length(v_dlm));
    end if;
    EXIT;
  END IF;
  IF (v_str is not null and length(v_str) > 0) THEN
    v_str := v_str || v_dlm || nt_in(v_idx);
  ELSE
    v_str := nt_in(v_idx);
  END IF;
  v_idx := nt_in.NEXT(v_idx);
END LOOP;
RETURN v_str;
end to_string

,但得到 ORA-00900: invalid SQL statement

是否可以使用 JDBC 创建 SQL 函数? 我使用 Oracle Database 11g 版本 11.1.0.0.0

【问题讨论】:

  • 你可以通过不同的界面添加你的功能吗?这个问题是特定于 jdbc 还是特定于您的函数?
  • 通过 Toad 我运行此代码没有问题。这个函数运行

标签: java sql oracle jdbc


【解决方案1】:

这是怎么回事?

String sql = "CREATE OR REPLACE FUNCTION TEST.\"TO_STRING\"(......";
connection.createStatement().execute(sql);

当然,您的 SQL 必须仍然正确。您实际上在最后一行缺少一个分号:

end to_string;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    相关资源
    最近更新 更多