1
1つのファイルからpowershellを使用してPL \ SQLの挿入/更新コマンドを実行するのに役立つ以下のスクリプトが書かれています。 同じファイルにselectコマンドを追加しても動作しません。 スクリプトファイルPANEL_UPDATE.sqlの内容Powershellを使用してOracleでPL SQLスクリプトを実行する
cls
# Oracle Read File
# Load the good assembly
Add-Type -Path "C:\app\ssz\product\12.1.0\client_1\odp.net\managed\common\Oracle.ManagedDataAccess.dll"
# Production connexion string
$compConStr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=Host1)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=serv1)));User Id=test1;Password=test123;"
# Connection Object
$oraConn= New-Object Oracle.ManagedDataAccess.Client.OracleConnection($compConStr)
$oraConn.Open()
# Requête SQL
$MyQuery = get-content "C:\PANEL_UPDATE.sql";
Write-Output $MyQuery
# Command Object
$command1 = New-Object Oracle.ManagedDataAccess.Client.OracleCommand($MyQuery, $oraConn)
#$command1 = New-Object Oracle.ManagedDataAccess.Client.OracleCommand
#$command1.CommandText = $MyQuery
#$command1.Connection = $oraConn
# Execution
$reader1=$command1.ExecuteNonQuery()
#$reader1=$command1.ExecuteReader()
#while ($reader1.read())
#{
# $DTable = $reader1["FILD_NAME"]
#}
# Fermeture de la conexion
#$reader1.Close()
$oraConn.Close()
、以下のようにしている私はSELECTを削除する場合は、ここで
BEGIN
UPDATE TABLE1 SET COL1 = 'TEST1' WHERE COL1 = 'TEST2';
UPDATE TABLE1 SET COL2 = 'TEST1' WHERE COL2 = 'TEST2';
UPDATE TABLE1 SET COL3 = 'TEST1' WHERE COL2 = 'TEST2';
SELECT COL1 FROM TABLE1 WHERE COL1 = 'TEST1';
END
は、PowerShellの
Exception calling "ExecuteNonQuery" with "0" argument(s): "ORA-06550: line 1, column 319:
PLS-00428: an INTO clause is expected in this SELECT statement"
At C:\Users\ssz\Desktop\OracleReadFile.ps1:27 char:5
+ $reader1=$command1.ExecuteNonQuery()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : OracleException
からの例外ですそのファイルからのクエリは、私にとって完璧に動作します。
おかげで、 Saurabh
は、 'INTO句これはあなたを助けるかもしれない – Noel
このSELECT statement'に期待されている。http://stackoverflow.com/a/4269651/1163423 –