首页 > 解决方案 > 脚本将创建的过程存储在单行中

问题描述

我已经在 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。

标签: excelvbaoraclestored-procedures

解决方案


不确定它是否会有所作为,但请尝试使用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

推荐阅读