【问题标题】:Script stores procedure creating in single line [duplicate]脚本存储在单行中创建的过程[重复]
【发布时间】:2020-03-15 13:22:33
【问题描述】:

我已经在 excel 中编写了 VBA 代码以在 oracle 中创建一个 SP,它工作正常。 但是当我在 oracle 中打开 SP 时,它会在一行中显示整个代码。我尝试了已知的换行方式,但没有任何效果。

我的实际 VB 代码:

If sp_exist_chk_flag > 0 Then
Else
   cmd_meta.CommandText = "create or replace PROCEDURE TEST_SP " & Chr(13) & _
    "As" & Chr(13) & _
    "REP DATA_REP.REP_ID%TYPE;" & Chr(13) & _
    "SELECT REP_ID INTO REP FROM DATA_REP WHERE REP_NAME='xyz';" & Chr(13) & _
    "COMMIT;" & Chr(13) & _
    "END;"

   cmd_meta.Execute
   MsgBox "SP Created"
End If

在 Oracle 中,我可以看到 SP 的创建如下所示

create or replace PROCEDURE TEST_SP As REP DATA_REP.REP_ID%TYPE; SELECT REP_ID INTO REP FROM DATA_REP WHERE REP_NAME='xyz'; COMMIT; END;

我的实际 SP 太长了,所以我的 vb 代码使它变得很长。 请使用 VB 代码或 oracle 命令帮助我,使其看起来像一个在 oracle 中有适当换行符的实际 SP。

【问题讨论】:

  • @Peh - 我清楚地提到我使用的是 excel,它是一个 VBA 代码

标签: excel vba oracle stored-procedures


【解决方案1】:

不确定是否会有所不同,但请尝试使用 vbCrLf 常量而不是 Chr(13)

If sp_exist_chk_flag > 0 Then
Else
   cmd_meta.CommandText = "create or replace PROCEDURE TEST_SP " & vbCrLf & _
    "As" & vbCrLf  & _
    "REP DATA_REP.REP_ID%TYPE;" & vbCrLf  & _
    "SELECT REP_ID INTO REP FROM DATA_REP WHERE REP_NAME='xyz';" & vbCrLf  & _
    "COMMIT;" & vbCrLf  & _
    "END;"

   cmd_meta.Execute
   MsgBox "SP Created"
End If

【讨论】:

  • 如果使用 Linux\Unix,请尝试使用 Chr(10),它是 vbLf 而不是 Chr(13)
  • 这不是Chr(10)
  • @dcp - 感谢它的工作:)
  • @Scales - 太好了!如果它解决了您的问题,请务必接受答案。
猜你喜欢
  • 2018-04-08
  • 2011-03-18
  • 2021-01-08
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多