파이썬 스크립트와 Pyodbc 모듈을 사용하여 호출하는 저장 프로 시저가 있습니다. 코드는 다음과 같습니다파이썬으로 저장 프로 시저 출력을 캡처 pyodbc
import pyodbc
pyodbc.pooling=False
oConnexion = pyodbc.connect("driver={Teradata};dbcname=myServer;DefaultDatabase=myDB;uid=myUser;pwd=myPassword;charset=utf8;", autocommit=True)
oConnexion.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
oConnexion.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
oConnexion.setencoding(encoding='utf-8')
oCursor = oConnexion.cursor()
oQueryRegisterBatch = "CALL DEV_AUDIT.SP_AUDIT_BATCH('ED_DATA_QUALITY_MANUAL', 'REGISTER', '1900-01-01 00:00:00.000000', '2999-12-31 00:00:00.000000');"
oCursor.execute(oQueryRegisterBatch)
for row in oCursor:
print (row)
저장 프로 시저가 새 레코드를 생성하고 레코드 ID (BATCH_KEY)를 반환합니다. Teradata에서 저장 프로 시저를 실행할 때 올바르게 BATCH_KEY를 반환하지만 파이썬에서 캡처 할 수는 없습니다. 내가 대신 값의 다음과 같은 오류 메시지가 :
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pyodbc.ProgrammingError: No results. Previous SQL was not a query.
내가 저장 프로 시저를 호출 한 후 테이블에 쿼리하여 BATCH_KEY를 검색 할 수 있지만하지 않도록하고 싶습니다. 저장 프로 시저의 출력을 캡처하는 방법을 알려주십시오.
감사
pyodbc 패키지의 문서 당으로
pyodbc Wiki 페이지 [https://github.com/mkleehammer/pyodbc/wiki/Calling-Stored-Procedures]는 익명 코드 블록을 사용하여 SQL Server에서이를 수행하는 방법을 보여줍니다. Teradata에서 SQL 구문을 미세 조정하여 유사한 접근법을 사용할 수 있습니다. –