Oracle SQL Developer - 调试帮助

发布于 2024-10-03 08:04:22 字数 552 浏览 4 评论 0原文

我正在尝试在 SQL Developer 中调试包。我尝试调试的方法需要两个参数

PROCEDURE procedure_name (dblink IN CHAR, bDebug IN BOOLEAN DEFAULT FALSE) 

当我单击“调试”图标时,它会询问我需要为此过程提供的输入。我给出了

dblink:='linkname';
bDebug:=TRUE;

,但是当它开始调试时,我看到 dblink 的值是

 'linkname                                                   
 '

链接名,很多空格,然后是结束引号。因此,当我在代码中尝试执行此操作时,

`strSrc VARCHAR(120) := 'tablename'||dblink;`

它会给我错误,即缓冲区太小,这是有道理的。但为什么 SQL Developer 这样做呢?如何修复它?

I am trying to debug a package with in the SQL Developer. The method that i am trying to debug takes 2 parameters

PROCEDURE procedure_name (dblink IN CHAR, bDebug IN BOOLEAN DEFAULT FALSE) 

When i click on "Debug" icon, it asks for inputs that i need to give to this procedure. I give

dblink:='linkname';
bDebug:=TRUE;

but when it starts debugging, I see the value of dblink as

 'linkname                                                   
 '

i.e. linkname, lots of spaces and then the ending quote. so when in code i try to do this

`strSrc VARCHAR(120) := 'tablename'||dblink;`

it gives me error that buffer is to small, which makes sense. but why SQL Developer is doing so? how to fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陪你搞怪i 2024-10-10 08:04:22

我猜测您的填充来自 SQL Developer 如何定义其要绑定的变量(它可能将其定义为 CHAR(4000))。现在,您应该能够通过在 dblink 变量周围放置 trim() 来在测试代码中解决这个问题:

strSrc VARCHAR(120) := 'tablename'||trim(dblink);

请注意,如果过程传递了一个文字(或一个正确大小的 CHAR 变量,一个 VARCHAR),则通常不需要这样做。等),就像生产代码可能正在做的那样。

I am guessing your padding is coming from how SQL Developer is defining its variable to bind with (it is probably defining it as a CHAR(4000)). For now, you should be able to get around this in your test code by putting trim() around the dblink variable:

strSrc VARCHAR(120) := 'tablename'||trim(dblink);

Note that this would normally not be needed if the procedure was passed a literal (or a correctly sized CHAR variable, a VARCHAR, etc), like the production code is probably doing.

一抹淡然 2024-10-10 08:04:22

出于调试目的,创建一个接受 VARCHAR2 参数的包装过程,然后将其传递给您的过程;然后您可以通过调用包装器在 SQL Developer 中对其进行调试。

For debugging purposes, create a wrapper procedure that accepts a VARCHAR2 parameter, then passes it to your procedure; then you debug it in SQL Developer by calling your wrapper.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文