diff --git a/uppsrc/Core/src.tpp/AProcess$en-us.tpp b/uppsrc/Core/src.tpp/AProcess$en-us.tpp index 1e314e57e..7b761f260 100644 --- a/uppsrc/Core/src.tpp/AProcess$en-us.tpp +++ b/uppsrc/Core/src.tpp/AProcess$en-us.tpp @@ -100,4 +100,4 @@ md])&] [s2;%% Runs process defined by [%-*@3 cmd] command line. If [%-*@3 cmd] was executed successfully and returned zero exit code, returns its standard output, otherwise returns String`::GetVoid().&] -[s3;%% ] \ No newline at end of file +[s0; ] \ No newline at end of file diff --git a/uppsrc/ODBC/ODBC.cpp b/uppsrc/ODBC/ODBC.cpp index 9af721ef9..2e2de1f84 100644 --- a/uppsrc/ODBC/ODBC.cpp +++ b/uppsrc/ODBC/ODBC.cpp @@ -327,8 +327,14 @@ bool ODBCConnection::Execute() param.Clear(); for(int i = 0; i < bparam.GetCount(); i++) { Param& p = bparam[i]; - if(!IsOk(SQLBindParameter(session->hstmt, i + 1, SQL_PARAM_INPUT, p.ctype, p.sqltype, - p.data.GetCount(), 0, (SQLPOINTER)~p.data, p.data.GetLength(), + SQLSMALLINT DataType; + SQLULEN ParameterSize; + SQLSMALLINT DecimalDigits; + SQLSMALLINT Nullable; + if(!IsOk(SQLDescribeParam(session->hstmt, i + 1, &DataType, &ParameterSize, &DecimalDigits, &Nullable))) + return false; + if(!IsOk(SQLBindParameter(session->hstmt, i + 1, SQL_PARAM_INPUT, p.ctype, DataType, + ParameterSize, DecimalDigits, (SQLPOINTER)~p.data, p.data.GetLength(), &p.li))) return false; } diff --git a/uppsrc/Sql/SqlSet.cpp b/uppsrc/Sql/SqlSet.cpp index 6e72de938..cab1fa10c 100644 --- a/uppsrc/Sql/SqlSet.cpp +++ b/uppsrc/Sql/SqlSet.cpp @@ -17,7 +17,7 @@ SqlSet operator&(const SqlSet& s1, const SqlSet& s2) { SqlSet operator-(const SqlSet& s1, const SqlSet& s2) { if(s1.IsEmpty() || s2.IsEmpty()) return s1; - return SqlSet(s1() + " minus " + s2(), SqlSet::SETOP); + return SqlSet(s1() + SqlCase(MSSQL, " except ")(" minus ") + s2(), SqlSet::SETOP); } String SqlSet::operator~() const {