iT邦幫忙

0

ORA-01722問題

  • 分享至 

  • xImage

我想請問遇到這問題該如何處理呢?

以下是我的程式碼

 var sSql = @"SELECT 'Tenno', NO
             FROM TABLEA
             WHERE NO NOT IN (SELECT LNO FROM TABLEB WHERE  LID= 'Tenno' )
             AND NO in (:NO)";

 var ExecuteResult = await conn.ExecuteAsync(sSql, new
                    {                      
                        NO =  NO
                    });

其中參數NO是這樣顯示

https://ithelp.ithome.com.tw/upload/images/20231006/20110132YVAGdWrWXo.png

這樣執行出來他直接顯示ORA-01722這個錯誤
可是我再PLSQL裡執行卻沒問題

 SELECT 'Tenno', NO
         FROM TABLEA
         WHERE NO NOT IN (SELECT LNO FROM TABLEB WHERE  LID= 'Tenno' )
         AND NO in ('2','3')  

我是用C# + DAPPER 然後DB是ORACLE

我可以請問這個該如何調整呢?

更新,已解決

改為"2,3"並且字串切割然後直接傳進去即可

順便想請問一下,有沒有人做過WPF 呼叫API然後使用DAPPER
我有個表單裡面顯示所有的TABLE,我希望點選某個TABLE的名稱
然後會顯示該TABLE的資料,目前再想DAPPER該回傳什麼
然後可以讓我WPF解讀呢?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
sinotec2
iT邦新手 5 級 ‧ 2023-10-09 19:33:10
最佳解答

不要直接將變數值插入 SQL 查詢中,因為這可能會導致 SQL 注入攻擊。改為使用參數化查詢以防止這種風險。

var sSql = @"
    SELECT 'Tenno', NO
    FROM TABLEA
    WHERE NO NOT IN (SELECT LNO FROM TABLEB WHERE LID = @LID)
    AND NO IN @NOList";

var ExecuteResult = await conn.ExecuteAsync(sSql, new
{                      
    LID = "Tenno",
    NOList = new[] { NO }
});

我要發表回答

立即登入回答