, , ? , :
OracleCommand :
@"BEGIN
CREATE TABLE {inListTableName}
(
inValue {dbDataType}
)
INSERT INTO {inListTableName}(inValue) VALUES(:inValue);
END"
ArrayBindCount , .
{inListTableName} Guid.NewGuid().ToString().
{dbDataType} , .
OracleParameter OracleCommand "inValue" , , . Hashset ( , ), .ToArray() .
. .
sql in select sql statement:
(SELECT {inListTableName}.inValue FROM {inListTableName})
:
SELECT FirstName, LastName FROM Users WHERE UserId IN (SELECT {inListTableName}.inValue FROM {inListTableName});
, .
, :
DROP TABLE {inListTableName};
. .
, / inListTable, .
:
public interface IInListOperation
{
void TransmitValueList(OracleConnection connection);
string GetInListSQLSnippet();
void RemoveValueList();
}
TransmitValueList , prep.
GetInListSQLSnippet (SELECT {inListTableName}.inValue FROM {inListTableName});
RemoveValueList .
db inListTableName.
, .
:
, , NOT IN . , , :
SELECT FirstName, LastName FROM Users WHERE Status == 'ACTIVE' OR UserID NOT IN (1,2,3,4,5,6,7,8,9,10);
NOT IN , . , , , UserIds 1-10.
SELECT FirstName, LastName FROM Users WHERE UserID NOT IN (1,2,3,4,5)
UNION
SELECT FirstName, LastName FROM Users WHERE UserID NOT IN (6,7,8,9,10);