调用Oracle存储过程时出错

时间:2014-06-25 14:28:04

标签: sql oracle stored-procedures

通常我不会使用Oracle DB,但今天我必须编写一个返回GUID的小存储过程。 (根据Oracle的数据类型RAW)

这就是我创造的。我可以编译存储过程,但是当我执行它时,我得到以下错误:字符串长度约束必须在范围内(1 ... 32767)。

CREATE OR REPLACE PROCEDURE GetId (MyInputVar IN VARCHAR2, Guid OUT RAW)
AS 
BEGIN
  SELECT "unid" into Guid FROM MyDB."incident" WHERE "ExternalId" = GetId.MyInputVar;
END;


DECLARE GiveMeTheGuid RAW;
        OtherSystemOrderId VARCHAR2 (60 CHAR) := 'ORDERNR1000';
BEGIN 
  Sitefinity_Order_NR(OtherSystemOrderId, GiveMeTheGuid);
  DBMS_OUTPUT.PUT_LINE(GiveMeTheGuid);
END;

1 个答案:

答案 0 :(得分:1)

RAW变量声明需要大小。

DECLARE
  theID RAW(32);
  OtherSystemOrderId VARCHAR2 (60 CHAR) := 'ORDERNR1000';
BEGIN
  GetID(OtherSystemOrderId, theID);
  dbms_output.put_line('unid is ' || theID);
END;

匿名阻止完成

unid是3F66DF77FC234C7B887A18F33C174A6A