J'essaye d'effectuer une insertion dans la base de données Oracle en utilisant le script Powershell. Cette approche fonctionne bien pour une requête de sélection, mais pour insérer, elle donne une erreur. J'ai lu beaucoup de messages de Stack Overflow et de divers autres sites et essayé diverses méthodes, mais aucune d'elles ne fonctionne.ORA-00917 virgule manquante dans Powershell
Comment puis-je le déboguer? Je ne suis pas un expert de Powershell. Je suis tout à fait sûr qu'il y a un problème avec le SQL.
Add-Type -Path "P:\Home\Full Oracle\ora11g_x86\odp.net\bin\2.x\Oracle.DataAccess.dll"
try
{
$compConStr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=**)(PORT=1552)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=**)));User Id=**;Password=**;"
$oraConn= New-Object Oracle.DataAccess.Client.OracleConnection($compConStr)
$sid = "0001"
$region = "CH"
$timestamp = "2017-04-20 14:14:00"
$dep = "17-04-2017"
$scenario = "A"
$milestone = "ASB_XREF_GLCC_LOAD_2ND_END_E"
$finishtime = "2017-04-18/11:11"
$sql = "INSERT INTO APP_PDM_MART.PDM_GEAR_KPI_REP_SNOW(ST_ID,PRIORITY,STATUS,ACTIVE,ACTIVITY_DUE,ADD_REPORTED_BY,BUSINESS_CRITICALITY) VALUES($sid,$region,$timestamp,$dep,$scenario,$milestone,$finishtime)"
$oraConn.Open()
$command = New-Object Oracle.DataAccess.Client.OracleCommand($sql,$oraConn)
$tx = $oraConn.BeginTransaction()
$command.ExecuteNonQuery()
merci beaucoup. Cela a résolu le problème. Je pense qu'Oracle doit écrire une meilleure erreur. Je me débattais tellement avec ça. Ce n'est qu'après des tests aléatoires que j'ai réalisé que le problème venait des données transmises. Même si je passais de la corde quelque part, il a été mal lancé automatiquement en ajoutant explicitement ci-dessous cela a fonctionné. '$ finishtime = $ Args [6]' '$ finishtime =" '$ finishtime' "' –