我必須調用帶有表變量參數的MS SQLServer存儲過程。pyodbc,調用帶表變量的存儲過程
/* Declare a variable that references the type. */
DECLARE @TableVariable AS [AList];
/* Add data to the table variable. */
INSERT INTO @TableVariable (val) VALUES ('value-1');
INSERT INTO @TableVariable (val) VALUES ('value-2');
EXEC [dbo].[sp_MyProc]
@param = @TableVariable
在SQL Sv管理工作室中工作良好。我在python中使用PyOdbc嘗試了以下內容:
cursor.execute("declare @TableVariable AS [AList]")
for a in mylist:
cursor.execute("INSERT INTO @TableVariable (val) VALUES (?)", a)
cursor.execute("{call dbo.sp_MyProc(@TableVariable)}")
出現以下錯誤:錯誤42000:必須聲明表變量。變量不能在不同的執行步驟中存活。 我也試過:
sql = "DECLARE @TableVariable AS [AList]; "
for a in mylist:
sql = sql + "INSERT INTO @TableVariable (val) VALUES ('{}'); ".format(a)
sql = sql + "EXEC [dbo].[sp_MyProc] @param = @TableVariable"
cursor.execute(sql)
出現以下錯誤:沒有結果。以前的SQL不是查詢。 沒有更多的機會與
sql = sql + "{call dbo.sp_MyProc(@TableVariable)}"
不會有人知道如何使用Pyodbc來處理呢?
嗯是的確,與相同的錯誤消息=未處理的編程錯誤:沒有結果。以前的SQL不是查詢 –