Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle URL字符串_Oracle_Url_Plsql - Fatal编程技术网

Oracle URL字符串

Oracle URL字符串,oracle,url,plsql,Oracle,Url,Plsql,我有一个表,其中包含一个VARCHAR2类型的字段,长度为255,用于存储URL。对其运行SELECT查询将返回数据,如下所示: SELECT URL FROM SERVICE WHERE ID = 1 返回我存储的URL(在本例中,file:///test.url/ 返回) 但是,从存储过程运行相同的操作时,会得到一个空框。我的所有其他字段都已填写,我没有发现任何错误。URL字段肯定包含数据,并且我已经确保它传递到的变量足够大,可以支持它 我的问题是:为了通过存储过程传递URL样式的字符串,

我有一个表,其中包含一个VARCHAR2类型的字段,长度为255,用于存储URL。对其运行SELECT查询将返回数据,如下所示:

SELECT URL FROM SERVICE WHERE ID = 1
返回我存储的URL(在本例中,file:///test.url/ 返回)

但是,从存储过程运行相同的操作时,会得到一个空框。我的所有其他字段都已填写,我没有发现任何错误。URL字段肯定包含数据,并且我已经确保它传递到的变量足够大,可以支持它

我的问题是:为了通过存储过程传递URL样式的字符串,我需要以特定的方式处理它吗?在与同事讨论这个问题时,他们认为URL字符串中的字符可能会触发某种形式的转义从句,但我找不到关于这个主题的任何进一步信息

编辑:所用存储过程的一部分:

      SELECT        ...,
                    USER.SERVICE.URL,
                    ...

      FROM          USER.SITE

      -- More joins

      INNER JOIN    USER.SERVICE
      ON            USER.SITE.URLID = USER.SERVICE.ID          

      -- More joins

      WHERE         USER.SERVICE.ID = 1...

您正在从存储过程运行此操作。这意味着您需要将其选择到变量中。从声音上看,您正在将所选数据公开给客户端应用程序,这意味着您需要以某种方式传递数据,例如通过输出参数

因此,问题的一个可能答案是,您没有填充您认为正在填充的变量,或者您没有将值传递给OUT参数(或其他)


不管你怎么弹,这是一个调试场景。如果你不能在这里发布你的代码(我相信当我说我真的不想仔细研究你的大量o’代码时,我是代表我们所有人的),那么你需要自己去检查一下

您正在从存储过程运行此操作。这意味着您需要将其选择到变量中。从声音上看,您正在将所选数据公开给客户端应用程序,这意味着您需要以某种方式传递数据,例如通过输出参数

因此,问题的一个可能答案是,您没有填充您认为正在填充的变量,或者您没有将值传递给OUT参数(或其他)


不管你怎么弹,这是一个调试场景。如果你不能在这里发布你的代码(我相信当我说我真的不想仔细研究你的大量o’代码时,我是代表我们所有人的),那么你需要自己去检查一下

正如他所说,您只执行select,而不存储它。您需要将字段的值存储在变量上。为了在存储过程或包中使用它,您需要将其存储在如下所示的变量中

SELECT field INTO var FROM table
记住,您不需要以特殊的方式处理它,因为它只是一个简单的字符串。你的程序应该是这样的

CREATE PROCEDURE DEMO(R_URL OUT VARCHAR2) IS  
BEGIN
 SELECT URL INTO R_URL FROM DUAL;
END;

正如他所说,您只执行select,而不存储它。您需要将字段的值存储在变量上。为了在存储过程或包中使用它,您需要将其存储在如下所示的变量中

SELECT field INTO var FROM table
记住,您不需要以特殊的方式处理它,因为它只是一个简单的字符串。你的程序应该是这样的

CREATE PROCEDURE DEMO(R_URL OUT VARCHAR2) IS  
BEGIN
 SELECT URL INTO R_URL FROM DUAL;
END;

也发布您的存储过程!快速回答:不,你不需要以任何特殊的方式处理它。你能包含存储过程的代码吗?不幸的是,它太大了,无法在这里发布,但我将包含试图从表中获取它的位。我同意@ppeterka,你不需要做任何特殊的事情。如果您需要更多帮助,我们需要查看完整的过程,或者至少是签名(带有参数列表)、任何相关的变量声明和完整的select语句。也发布您的存储过程!快速回答:不,你不需要以任何特殊的方式处理它。你能包含存储过程的代码吗?不幸的是,它太大了,无法在这里发布,但我将包含试图从表中获取它的位。我同意@ppeterka,你不需要做任何特殊的事情。如果您需要更多帮助,我们需要查看完整的过程,或者至少是签名(带有参数列表)、任何相关的变量声明和完整的select语句。。