我有一個應用程序,允許用戶使用佔位符爲我的應用程序生成的某些值輸入SQL字符串。應用程序將用值替換佔位符,並通過各種數據庫後端執行SQL字符串。通過ODBC執行存儲過程
對於ODBC後端,我調用了SQLExecDirect(),它對常規查詢很好地工作,但對於帶有參數的存儲過程失敗。
是否有一種簡單的方法來擴展此機制以支持存儲過程? SQL必須如何編寫的某種方式?
我現在唯一能想到的就是開始解析SQL字符串,如果它包含「call」,則調用SQLBindParameter()n次。但解析SQL很棘手。
任何想法?
工作SQL例如:從FOO SELECT columnA其中columnB = '%佔位符'
非工作SQL:CALL StoredFoo( '%佔位符')
聽起來像一個可怕的應用程序..沒有罪。我會建議存儲過程創建一個特定的接口,如果這是必需的功能。您如何相信您的用戶可以編寫出好的非破壞性查詢? – Fosco 2010-08-17 17:13:51
該應用程序安裝在用戶的PC上,並且作爲配置過程的一部分,他可以將SQL語句的值保存到他的配置文件中。除了他可能意外覆蓋自己的數據之外,沒有任何安全問題。 – 2010-08-17 17:20:25