Search code examples
oracle-databasepowershellsqlplus

How to print with powershell from SQLplus a string with quotation quotes


Sequel from this question

define a='eee"dd'
prompt &a                       -- eee"dd OK
host powershell.exe echo '&a';  -- eeedd  not OK
host powershell.exe echo &a;    -- eeedd  not OK

As you can see, I can't print a stirng with a quotation quote in powershell from sql plus. Is there a way to do that.?


I've tried the solution of Alex Poole when the value comes from a query.But it's not working if there is more than one quotation string.

column a new_value a 
select replace('eee"d"d', '"', '""') as a from dual;

prompt &a                      -- eee""d""d  Ok as expected
host powershell.exe echo '"&a"'-- eee"dd instead of eee"d"d

Solution

  • It seems to work if you escape the quote (for PowerShell's benefit) by using "" within the value, and use both types of quotes, for both PowerShell's and SQL*Plus's benefit:

    SQL> define a='eee""dd'
    SQL> host powershell.exe echo '"&a"'
    eee"dd
    

    If you are actually populating the a variable from a query, as in your previous questions, then you can replace() quotes with:

    column a new_value a
    select replace('eee"dd', '"', '""') as a from dual;