⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 odbcapi.c

📁 postgresql-odbc,跨平台应用
💻 C
📖 第 1 页 / 共 3 页
字号:
	LEAVE_STMT_CS(stmt);	return ret;}RETCODE		SQL_APISQLExtendedFetch(				 HSTMT hstmt,				 SQLUSMALLINT fFetchType,				 SQLLEN irow,#ifdef WITH_UNIXODBC				 SQLROWSETSIZE *pcrow,#else				 SQLULEN *pcrow,#endif /* WITH_UNIXODBC */				 SQLUSMALLINT *rgfRowStatus){	RETCODE	ret;	StatementClass *stmt = (StatementClass *) hstmt;	mylog("[SQLExtendedFetch]");	ENTER_STMT_CS(stmt);	SC_clear_error(stmt);	StartRollbackState(stmt);#ifdef WITH_UNIXODBC	{		SQLULEN	retrieved;		ret = PGAPI_ExtendedFetch(hstmt, fFetchType, irow, &retrieved, rgfRowStatus, 0, SC_get_ARDF(stmt)->size_of_rowset_odbc2);		if (pcrow)			*pcrow = retrieved;	}#else	ret = PGAPI_ExtendedFetch(hstmt, fFetchType, irow, pcrow, rgfRowStatus, 0, SC_get_ARDF(stmt)->size_of_rowset_odbc2);#endif /* WITH_UNIXODBC */	stmt->transition_status = 7;	ret = DiscardStatementSvp(stmt, ret, FALSE);	LEAVE_STMT_CS(stmt);	return ret;}RETCODE		SQL_APISQLForeignKeys(			   HSTMT hstmt,			   SQLCHAR *szPkCatalogName,			   SQLSMALLINT cbPkCatalogName,			   SQLCHAR *szPkSchemaName,			   SQLSMALLINT cbPkSchemaName,			   SQLCHAR *szPkTableName,			   SQLSMALLINT cbPkTableName,			   SQLCHAR *szFkCatalogName,			   SQLSMALLINT cbFkCatalogName,			   SQLCHAR *szFkSchemaName,			   SQLSMALLINT cbFkSchemaName,			   SQLCHAR *szFkTableName,			   SQLSMALLINT cbFkTableName){	CSTR func = "SQLForeignKeys";	RETCODE	ret;	StatementClass *stmt = (StatementClass *) hstmt;	SQLCHAR *pkctName = szPkCatalogName, *pkscName = szPkSchemaName,		*pktbName = szPkTableName, *fkctName = szFkCatalogName,		*fkscName = szFkSchemaName, *fktbName = szFkTableName;	mylog("[%s]", func);	ENTER_STMT_CS(stmt);	SC_clear_error(stmt);	StartRollbackState(stmt);	if (SC_opencheck(stmt, func))		ret = SQL_ERROR;	else		ret = PGAPI_ForeignKeys(hstmt, pkctName, cbPkCatalogName,			pkscName, cbPkSchemaName, pktbName, cbPkTableName,			fkctName, cbFkCatalogName, fkscName, cbFkSchemaName,			fktbName, cbFkTableName);	if (SQL_SUCCESS == ret && 0 == QR_get_num_total_tuples(SC_get_Result(stmt))) 	{		BOOL	ifallupper = TRUE, reexec = FALSE;		char *newPkct = NULL, *newPksc = NULL, *newPktb = NULL,			*newFkct = NULL, *newFksc = NULL, *newFktb = NULL;		ConnectionClass *conn = SC_get_conn(stmt);		if (SC_is_lower_case(stmt, conn)) /* case-insensitive identifier */			ifallupper = FALSE;		if (newPkct = make_lstring_ifneeded(conn, szPkCatalogName, cbPkCatalogName, ifallupper), NULL != newPkct)		{			pkctName = newPkct;			reexec = TRUE;		}		if (newPksc = make_lstring_ifneeded(conn, szPkSchemaName, cbPkSchemaName, ifallupper), NULL != newPksc)		{			pkscName = newPksc;			reexec = TRUE;		}		if (newPktb = make_lstring_ifneeded(conn, szPkTableName, cbPkTableName, ifallupper), NULL != newPktb)		{			pktbName = newPktb;			reexec = TRUE;		}		if (newFkct = make_lstring_ifneeded(conn, szFkCatalogName, cbFkCatalogName, ifallupper), NULL != newFkct)		{			fkctName = newFkct;			reexec = TRUE;		}		if (newFksc = make_lstring_ifneeded(conn, szFkSchemaName, cbFkSchemaName, ifallupper), NULL != newFksc)		{			fkscName = newFksc;			reexec = TRUE;		}		if (newFktb = make_lstring_ifneeded(conn, szFkTableName, cbFkTableName, ifallupper), NULL != newFktb)		{			fktbName = newFktb;			reexec = TRUE;		}		if (reexec)		{			ret = PGAPI_ForeignKeys(hstmt, pkctName, cbPkCatalogName,			pkscName, cbPkSchemaName, pktbName, cbPkTableName,			fkctName, cbFkCatalogName, fkscName, cbFkSchemaName,			fktbName, cbFkTableName);			if (newPkct)				free(newPkct);			if (newPksc)				free(newPksc);			if (newPktb)				free(newPktb);			if (newFkct)				free(newFkct);			if (newFksc)				free(newFksc);			if (newFktb)				free(newFktb);		}	}	ret = DiscardStatementSvp(stmt, ret, FALSE);	LEAVE_STMT_CS(stmt);	return ret;}RETCODE		SQL_APISQLMoreResults(HSTMT hstmt){	RETCODE	ret;	StatementClass *stmt = (StatementClass *) hstmt;	mylog("[SQLMoreResults]");	ENTER_STMT_CS(stmt);	SC_clear_error(stmt);	StartRollbackState(stmt);	ret = PGAPI_MoreResults(hstmt);	ret = DiscardStatementSvp(stmt, ret, FALSE);	LEAVE_STMT_CS(stmt);	return ret;}RETCODE		SQL_APISQLNativeSql(			 HDBC hdbc,			 SQLCHAR *szSqlStrIn,			 SQLINTEGER cbSqlStrIn,			 SQLCHAR *szSqlStr,			 SQLINTEGER cbSqlStrMax,			 SQLINTEGER *pcbSqlStr){	RETCODE	ret;	ConnectionClass *conn = (ConnectionClass *) hdbc;	mylog("[SQLNativeSql]");	ENTER_CONN_CS(conn);	CC_clear_error(conn);	ret = PGAPI_NativeSql(hdbc, szSqlStrIn, cbSqlStrIn, szSqlStr,						   cbSqlStrMax, pcbSqlStr);	LEAVE_CONN_CS(conn);	return ret;}RETCODE		SQL_APISQLNumParams(			 HSTMT hstmt,			 SQLSMALLINT *pcpar){	RETCODE	ret;	StatementClass *stmt = (StatementClass *) hstmt;	mylog("[SQLNumParams]");	ENTER_STMT_CS(stmt);	SC_clear_error(stmt);	StartRollbackState(stmt);	ret = PGAPI_NumParams(hstmt, pcpar);	ret = DiscardStatementSvp(stmt, ret, FALSE);	LEAVE_STMT_CS(stmt);	return ret;}#if (ODBCVER < 0x0300)RETCODE		SQL_APISQLParamOptions(				HSTMT hstmt,				SQLULEN crow,				SQLULEN *pirow){	RETCODE	ret;	StatementClass *stmt = (StatementClass *) hstmt;	mylog("[SQLParamOptions]");	ENTER_STMT_CS(stmt);	SC_clear_error(stmt);	StartRollbackState(stmt);	ret = PGAPI_ParamOptions(hstmt, crow, pirow);	ret = DiscardStatementSvp(stmt, ret, FALSE);	LEAVE_STMT_CS(stmt);	return ret;}#endif /* ODBCVER */RETCODE		SQL_APISQLPrimaryKeys(			   HSTMT hstmt,			   SQLCHAR *szCatalogName,			   SQLSMALLINT cbCatalogName,			   SQLCHAR *szSchemaName,			   SQLSMALLINT cbSchemaName,			   SQLCHAR *szTableName,			   SQLSMALLINT cbTableName){	CSTR func = "SQLPrimaryKeys";	RETCODE	ret;	StatementClass *stmt = (StatementClass *) hstmt;	SQLCHAR	*ctName = szCatalogName, *scName = szSchemaName,		*tbName = szTableName;	mylog("[%s]", func);	ENTER_STMT_CS(stmt);	SC_clear_error(stmt);	StartRollbackState(stmt);	if (SC_opencheck(stmt, func))		ret = SQL_ERROR;	else		ret = PGAPI_PrimaryKeys(hstmt, ctName, cbCatalogName,			scName, cbSchemaName, tbName, cbTableName, 0);	if (SQL_SUCCESS == ret && 0 == QR_get_num_total_tuples(SC_get_Result(stmt))) 	{		BOOL	ifallupper = TRUE, reexec = FALSE;		char *newCt = NULL, *newSc = NULL, *newTb = NULL;		ConnectionClass *conn = SC_get_conn(stmt);		if (SC_is_lower_case(stmt, conn)) /* case-insensitive identifier */			ifallupper = FALSE;		if (newCt = make_lstring_ifneeded(conn, szCatalogName, cbCatalogName, ifallupper), NULL != newCt)		{			ctName = newCt;			reexec = TRUE;		}		if (newSc = make_lstring_ifneeded(conn, szSchemaName, cbSchemaName, ifallupper), NULL != newSc)		{			scName = newSc;			reexec = TRUE;		}		if (newTb = make_lstring_ifneeded(conn, szTableName, cbTableName, ifallupper), NULL != newTb)		{			tbName = newTb;			reexec = TRUE;		}		if (reexec)		{			ret = PGAPI_PrimaryKeys(hstmt, ctName, cbCatalogName,			scName, cbSchemaName, tbName, cbTableName, 0);			if (newCt)				free(newCt);			if (newSc)				free(newSc);			if (newTb)				free(newTb);		}	}	ret = DiscardStatementSvp(stmt, ret, FALSE);	LEAVE_STMT_CS(stmt);	return ret;}RETCODE		SQL_APISQLProcedureColumns(					HSTMT hstmt,					SQLCHAR *szCatalogName,					SQLSMALLINT cbCatalogName,					SQLCHAR *szSchemaName,					SQLSMALLINT cbSchemaName,					SQLCHAR *szProcName,					SQLSMALLINT cbProcName,					SQLCHAR *szColumnName,					SQLSMALLINT cbColumnName){	CSTR func = "SQLProcedureColumns";	RETCODE	ret;	StatementClass *stmt = (StatementClass *) hstmt;	SQLCHAR	*ctName = szCatalogName, *scName = szSchemaName,		*prName = szProcName, *clName = szColumnName;	UWORD	flag = 0;	mylog("[%s]", func);	ENTER_STMT_CS(stmt);	SC_clear_error(stmt);	StartRollbackState(stmt);#if (ODBCVER >= 0x0300)	if (stmt->options.metadata_id)		flag |= PODBC_NOT_SEARCH_PATTERN;#endif	if (SC_opencheck(stmt, func))		ret = SQL_ERROR;	else		ret = PGAPI_ProcedureColumns(hstmt, ctName, cbCatalogName,				scName, cbSchemaName, prName, cbProcName,					clName, cbColumnName, flag);	if (SQL_SUCCESS == ret && 0 == QR_get_num_total_tuples(SC_get_Result(stmt))) 	{		BOOL	ifallupper = TRUE, reexec = FALSE;		char *newCt = NULL, *newSc = NULL, *newPr = NULL, *newCl = NULL;		ConnectionClass *conn = SC_get_conn(stmt);		if (SC_is_lower_case(stmt, conn)) /* case-insensitive identifier */			ifallupper = FALSE;		if (newCt = make_lstring_ifneeded(conn, szCatalogName, cbCatalogName, ifallupper), NULL != newCt)		{			ctName = newCt;			reexec = TRUE;		}		if (newSc = make_lstring_ifneeded(conn, szSchemaName, cbSchemaName, ifallupper), NULL != newSc)		{			scName = newSc;			reexec = TRUE;		}		if (newPr = make_lstring_ifneeded(conn, szProcName, cbProcName, ifallupper), NULL != newPr)		{			prName = newPr;			reexec = TRUE;		}		if (newCl = make_lstring_ifneeded(conn, szColumnName, cbColumnName, ifallupper), NULL != newCl)		{			clName = newCl;			reexec = TRUE;		}		if (reexec)		{			ret = PGAPI_ProcedureColumns(hstmt, ctName, cbCatalogName,				scName, cbSchemaName, prName, cbProcName,					clName, cbColumnName, flag);			if (newCt)				free(newCt);			if (newSc)				free(newSc);			if (newPr)				free(newPr);			if (newCl)				free(newCl);		}	}	ret = DiscardStatementSvp(stmt, ret, FALSE);	LEAVE_STMT_CS(stmt);	return ret;}RETCODE		SQL_APISQLProcedures(			  HSTMT hstmt,			  SQLCHAR *szCatalogName,			  SQLSMALLINT cbCatalogName,			  SQLCHAR *szSchemaName,			  SQLSMALLINT cbSchemaName,			  SQLCHAR *szProcName,			  SQLSMALLINT cbProcName){	CSTR func = "SQLProcedures";	RETCODE	ret;	StatementClass *stmt = (StatementClass *) hstmt;	SQLCHAR	*ctName = szCatalogName, *scName = szSchemaName,		*prName = szProcName;	UWORD	flag = 0;	mylog("[%s]", func);	ENTER_STMT_CS(stmt);	SC_clear_error(stmt);	StartRollbackState(stmt);#if (ODBCVER >= 0x0300)	if (stmt->options.metadata_id)		flag |= PODBC_NOT_SEARCH_PATTERN;#endif	if (SC_opencheck(stmt, func))		ret = SQL_ERROR;	else		ret = PGAPI_Procedures(hstmt, ctName, cbCatalogName,					 scName, cbSchemaName, prName,					 cbProcName, flag);	if (SQL_SUCCESS == ret && 0 == QR_get_num_total_tuples(SC_get_Result(stmt))) 	{		BOOL	ifallupper = TRUE, reexec = FALSE;		char *newCt = NULL, *newSc = NULL, *newPr = NULL;		ConnectionClass *conn = SC_get_conn(stmt);		if (SC_is_lower_case(stmt, conn)) /* case-insensitive identifier */			ifallupper = FALSE;		if (newCt = make_lstring_ifneeded(conn, szCatalogName, cbCatalogName, ifallupper), NULL != newCt)		{			ctName = newCt;			reexec = TRUE;		}		if (newSc = make_lstring_ifneeded(conn, szSchemaName, cbSchemaName, ifallupper), NULL != newSc)		{			scName = newSc;			reexec = TRUE;		}		if (newPr = make_lstring_ifneeded(conn, szProcName, cbProcName, ifallupper), NULL != newPr)		{			prName = newPr;			reexec = TRUE;		}		if (reexec)		{			ret = PGAPI_Procedures(hstmt, ctName, cbCatalogName,					 scName, cbSchemaName, prName, cbProcName, flag);			if (newCt)				free(newCt);			if (newSc)				free(newSc);			if (newPr)				free(newPr);		}	}	ret = DiscardStatementSvp(stmt, ret, FALSE);	LEAVE_STMT_CS(stmt);	return ret;}RETCODE		SQL_APISQLSetPos(		  HSTMT hstmt,		  SQLSETPOSIROW irow,		  SQLUSMALLINT fOption,		  SQLUSMALLINT fLock){	RETCODE	ret;	StatementClass *stmt = (StatementClass *) hstmt;	mylog("[SQLSetPos]");	ENTER_STMT_CS(stmt);	SC_clear_error(stmt);	StartRollbackState(stmt);	ret = PGAPI_SetPos(hstmt, irow, fOption, fLock);	ret = DiscardStatementSvp(stmt, ret, FALSE);	LEAVE_STMT_CS(stmt);	return ret;}RETCODE		SQL_APISQLTablePrivileges(				   HSTMT hstmt,				   SQLCHAR *szCatalogName,				   SQLSMALLINT cbCatalogName,				   SQLCHAR *szSchemaName,				   SQLSMALLINT cbSchemaName,				   SQLCHAR *szTableName,				   SQLSMALLINT cbTableName){	CSTR func = "SQLTablePrivileges";	RETCODE	ret;	StatementClass *stmt = (StatementClass *) hstmt;	SQLCHAR	*ctName = szCatalogName, *scName = szSchemaName,		*tbName = szTableName;	UWORD	flag = 0;	mylog("[%s]", func);	ENTER_STMT_CS(stmt);	SC_clear_error(stmt);	StartRollbackState(stmt);#if (ODBCVER >= 0x0300)	if (stmt->options.metadata_id)		flag |= PODBC_NOT_SEARCH_PATTERN;#endif	if (SC_opencheck(stmt, func))		ret = SQL_ERROR;	else		ret = PGAPI_TablePrivileges(hstmt, ctName, cbCatalogName,			scName, cbSchemaName, tbName, cbTableName, flag);	if (SQL_SUCCESS == ret && 0 == QR_get_num_total_tuples(SC_get_Result(stmt))) 	{		BOOL	ifallupper = TRUE, reexec = FALSE;		char *newCt = NULL, *newSc = NULL, *newTb = NULL;		ConnectionClass *conn = SC_get_conn(stmt);		if (SC_is_lower_case(stmt, conn)) /* case-insensitive identifier */			ifallupper = FALSE;		if (newCt = make_lstring_ifneeded(conn, szCatalogName, cbCatalogName, ifallupper), NULL != newCt)		{			ctName = newCt;			reexec = TRUE;		}		if (newSc = make_lstring_ifneeded(conn, szSchemaName, cbSchemaName, ifallupper), NULL != newSc)		{			scName = newSc;			reexec = TRUE;		}		if (newTb = make_lstring_ifneeded(conn, szTableName, cbTableName, ifallupper), NULL != newTb)		{			tbName = newTb;			reexec = TRUE;		}		if (reexec)		{			ret = PGAPI_TablePrivileges(hstmt, ctName, cbCatalogName,			scName, cbSchemaName, tbName, cbTableName, 0);			if (newCt)				free(newCt);			if (newSc)				free(newSc);			if (newTb)				free(newTb);		}	}	ret = DiscardStatementSvp(stmt, ret, FALSE);	LEAVE_STMT_CS(stmt);	return ret;}RETCODE		SQL_APISQLBindParameter(				 HSTMT hstmt,				 SQLUSMALLINT ipar,				 SQLSMALLINT fParamType,				 SQLSMALLINT fCType,				 SQLSMALLINT fSqlType,				 SQLULEN cbColDef,				 SQLSMALLINT ibScale,				 PTR rgbValue,				 SQLLEN cbValueMax,				 SQLLEN *pcbValue){	RETCODE	ret;	StatementClass *stmt = (StatementClass *) hstmt;	mylog("[SQLBindParameter]");	ENTER_STMT_CS(stmt);	SC_clear_error(stmt);	StartRollbackState(stmt);	ret = PGAPI_BindParameter(hstmt, ipar, fParamType, fCType,					   fSqlType, cbColDef, ibScale, rgbValue, cbValueMax,							   pcbValue);	ret = DiscardStatementSvp(stmt, ret, FALSE);	LEAVE_STMT_CS(stmt);	return ret;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -