попробуйте это:
...
vl integer := 4;
sql_stmt varchar2(200);
v_hint varchar2(100);
begin
v_hint := '/*+ PARALELL('||vl||') */'
sql_stmt := 'SELECT'||' '||V_HINT||' '||'* from employee'
...
Вот шаги, которые я сделал бы:
Вот некоторые предложения для метода:
От 3,5 вперед можно использовать функцию LINQ для этого:
List<string> l1 = new List<string> {"Hello", "World","How","Are","You"};
List<string> l2 = new List<string> {"Hello","World","How","Are","You"};
Console.WriteLine(l1.SequenceEqual(l2));
Это также знает, что перегрузка обеспечивает Ваш собственный компаратор
Что-то вроде этого:
public static bool CompareLists(List<int> l1, List<int> l2)
{
if (l1 == l2) return true;
if (l1.Count != l2.Count) return false;
for (int i=0; i<l1.Count; i++)
if (l1[i] != l2[i]) return false;
return true;
}
Некоторая дополнительная проверка ошибок (например, пустые проверки) могла бы требоваться.
Принятие Вас означает, что Вы хотите знать, равно ли СОДЕРЖАНИЕ (не только ссылка на объект списка.)
При выполнении проверки равенства намного чаще, чем вставляет затем, можно найти более эффективным генерировать хэш-код каждый раз, когда значение вставляется, и сравните хэш-коды при выполнении проверки равенства. Обратите внимание, что необходимо рассмотреть, важен ли порядок или просто что списки имеют идентичное содержание в любом порядке.
Если Вы не выдерживаете сравнение очень часто, я думаю, что это обычно было бы отходами.
Что-то вроде этого, возможно, использующее Действие Соответствия.
public static CompareList<T>(IList<T> obj1, IList<T> obj2, Action<T,T> match)
{
if (obj1.Count != obj2.Count) return false;
for (int i = 0; i < obj1.Count; i++)
{
if (obj2[i] != null && !match(obj1[i], obj2[i]))
return false;
}
}
Один ярлык, что я не видел упомянул, заключается в том, что если вы знаете, как созданы списки, вы можете присоединиться к ним в строки и сравнить напрямую.
Например ...
В моем случае я хотел подсказать пользователю список слов. Я хотел убедиться, что каждое слово началось с буквы, но после этого он может содержать буквы, цифры или подчеркивания. Я особенно обеспокоен тем, что пользователи будут использовать тире или начать с номеров.
Я использую регулярные выражения, чтобы сломать его на 2 списка, и они присоединяются к ним обратно вместе и сравнивают их как строки:
var testList = userInput.match(/[-|\w]+/g)
/*the above catches common errors:
using dash or starting with a numeric*/
listToUse = userInput.match(/[a-zA-Z]\w*/g)
if (listToUse.join(" ") != testList.join(" ")) {
return "the lists don't match"
, так как я знал, что ни один из списков не будет содержать пробелов, и что списки содержали только простые строки, я мог бы Присоединяйтесь к ним вместе с пространством и сравните их.