Код Python 3.8.1, с которым я работаю, выполняет несколько вызовов хранимых процедур, получает результаты, выполняет простой оператор select, передавая строку - все успешно, используя pypyodb c. Мой последний звонок поставил меня в тупик, так как он просто не дает никаких результатов или терпит неудачу. Хранимая процедура обновляет 1 столбец в 3 таблицах на основе идентификатора OrderID и вставляет 1 строку в другую таблицу. При использовании SSMS вызов будет выглядеть так:
exec GK_set_order '123456'
, где 123456
- это OrderID
. OrderID
- это varchar()
. Я вошел в систему SSMS как пользователь в своем операторе Python connect и выполнил эту хранимую процедуру, и она работает каждый раз.
В Python номер заказа используется в качестве ADCOrderID, строки. Я подозреваю, что одиночные кавычки - это то, что кусает меня. Моей первой попыткой было создать отдельную строку и выполнить эту строку.
exec_SP = "exec GK_set_order '" + ADCOrderID + "'"
cur.execute(exec_SP)
A print(exec_SP)
утверждение показывает, что это именно то, что я хочу. Но я не получаю никаких ошибок, никаких исключений, и ничего не обновляется в базе данных. Я пробовал 20 различных вариантов, включая двойные и тройные кавычки. Ничего не было эффективным.
Изменено на:
exec_SP = "exec GK_set_Order(?)"
cur.execute(exec_SP, ADCOrderID)
Теперь я получаю сообщение об ошибке:
TypeError: Параметры должны быть в списке, кортеже или строке
Чего мне в принципе не хватает?