i IN 1..v_action LOOP --записываем названия условий в массив
SELECT action INTO m_action(i) FROM metadatasid = c_sidaction_id = i;
END LOOP;
i IN 1..v_condition LOOP --записываем логические операции в массив
SELECT connection INTO m_connection(i) FROM metadatasid = c_sidcondition_id = i;LOOP;
COUNT(prod_id) INTO v_product --находим количество продукцийdecisionsid = c_sid;
i IN 1..v_product LOOP:=q||', prod_'||i||' VARCHAR(30)';LOOP;
COUNT(table_name) INTO c FROM user_tables WHERE
table_name='DECISION_'||p_table_id;c=0 THEN_execute :='CREATE GLOBAL TEMPORARY
TABLE decision_'||p_table_id||'(names varchar2(100)'||q||') ON COMMIT DELETE
ROWS';IMMEDIATE q_execute;IF;
FOR i IN 1..v_product LOOP --=== режем все продукции на элементы и записываем в один ольшой массив
SELECT conditions INTO m_conditiondecisionsid = c_sidprod_id = i;
j IN 1..v_condition LOOPj <> v_condition THENregexp_substr(m_condition, '[^'||m_connection(j)||']+', 1, 1) INTO m_product((i-1)*v_condition+j)dual; -- выпезаем первое условие
INSTR(m_condition, m_connection(j)) INTO v_in_str
FROM dual; -- находим позицию первого соединения
SELECT SUBSTR(m_condition, v_in_str + 1, LENGTH(m_condition)) INTO s
FROM dual;_condition := s; -- вырезаем строку с этой позиции и
обрабатываем дальше
ELSE m_product((i-1)*v_condition+j) := s;IF;LOOP;LOOP;
i IN 1..v_condition LOOP --=== заполняем decision условиямиcondition INTO m_conditionmetadatasid = c_sidcondition_id = i;
:= '';j IN 1..v_product LOOPDECODE(m_product((j-1)*v_condition+i),'yes','+','no','-','_','/','[/w0-9<>]*') INTO s(SELECT m_product((j-1)*v_condition+i) FROM dual); -- преобразуем ответы в символьный вид:=q||', '''||s||'''';LOOP;_execute:='INSERT INTO decision_'||p_table_id||' VALUES('''||m_condition||''''||q||')';IMMEDIATE q_execute; -- заполняем таблицу условиямиLOOP;
i IN 1..v_action LOOP_execute:='INSERT INTO decision_'||p_table_id||'(names) VALUES('''||m_action(i)||''')';
EXECUTE IMMEDIATE q_execute; -- заполняем таблицу названиями действий
END LOOP;
j IN 1..v_product LOOPactions INTO strdecisionsid = c_sidprod_id = j;
i IN 1..v_condition LOOP -- парсим строку действий в массивi <> v_condition THENregexp_substr(str, '[^'||m_connection(i)||']+', 1, 1) INTO m_product(i)(SELECT str FROM dual);INSTR(str, m_connection(i)) INTO v_in_str FROM (SELECT str FROM dual);SUBSTR(str, v_in_str+1, LENGTH(str)) INTO s FROM (SELECT str FROM dual);:= s;m_product(i):=s;IF;LOOP;
i IN 1..v_condition LOOP -- ставим крестики напротив необходмых действий_execute:='UPDATE decision_'||p_table_id||' SET prod_'||j||'=''x'' WHERE names='''||m_product(i)||'''';IMMEDIATE q_execute;LOOP;LOOP;
_END := SYSTIMESTAMP;_output.put_line('Времы работы:
'||(TIME_END-TIME_START));prc_translate;;pkg_get_answer;
Интерфейс пользователя
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> // главная страница
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>БЗ</title>
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="accord.css">
<script type="text/javascript" src="jquery.tools.min.js" ></script>
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<div id='header'>
<img>
<div>
</div>
<div id='wrap'>
<div id="accordion">
<img src="images/i1.jpg" />
<div style="width:200px; display:block">
<h2>Work with knowledgebase </h2>
<a>
</div>
<img src="images/i2.jpg" />
<div >
<h2>Knowledge base</h2>
<a>
</div>
<img src="images/i3.jpg" />
<div>
<h2>Getting started</h2>
<a>
<a>
</div>
<img src="images/i4.jpg" />
<div >
<h2>Manual</h2>
<a>
<a>
</div>
</div>
<div id="dept"></div>
<div>
<a>
<form id="myform1">
<h2>Login form</h2><br>
<div>
<div>
<div>
<div>Login</div> <input type="text" name="name" pattern="[a-zA-Z ]{5,}" minlength="4" maxlength="30" id='log1' />*<br><br>
<div>Password</div> <input
type="password" name="password" minlength="4"
id='pas1'/>*<br><br>
<button>
<br><br> <a id='registr'>
<A HREF="" id='mainref' ></A>
</form>
</div>
<div>
<a>
<form id="myform2">
<h2>Registration form</h2><br>
<div>Name</div> <input type="text" name="name" maxlength="30" id='name'/>*
<br><br>
<div>
<div>
<fieldset>
<div>
<div>
<div>
</fieldset>
<br><br><br>
<button>
</form>
</div>
</div>
<div id='footer'>footer</div>
</body>
<!-скрипт для главной страницы-->
$(function() {
$("#accordion").tabs("#accordion div", { //Инициализация аккордиона: 'img',: 'horizontal'
});
//$(":date").dateinput({lang: 'fr',});
$('#sp2').parent().css('display', 'none'); //Скрываем 2-ой и 3-ий списки в форме аутентификации
$('#sp3').parent().css('display', 'none');
$("#registr").overlay({ // Инициализация регистрационной формы: function() {
// $("#myform1").validator().destroy();
// $("#myform2").validator();
$("#logdb").overlay().close();
$('#log1').val("");
$('#pas1').val("");
},: { color: '#fff',: 200,: 0.65
},
});
$("#myform2").submit(function(e) { // Кнопка submit в регистрационной формеcity = $('#city').val();state = $('#state').val();street = $('#street').val();log = $('#log2').val();name = $('#name').val();pas = $('#pas2').val();
//var sysname=$('#sp1').val();
//alert(sysname);
((log!="")&&(pas!="")) {
$("#registr").overlay().close();
$.ajax({ type:'GET',:'index2.php',: "col=insert into data_users (user_id,home_city,home_state,home_street,login,name,password,sysname,domain,subdomain) "
+"values (data_us_seq.nextval,'"+city+"','"+state+"','"+street+"','"+log+"','"+name+"','"+pas
+"','Medicine','Diagnostics','Skin')",: 3000,:
function(data){('User is added!');
},
});
}e.preventDefault();
});
$("#myform1").submit(function(e) { // Кнопка submit в аутентификационной формеlog = $('#log1').val();pas = $('#pas1').val();sysname = $('#sp1').val();domain = $('#sp2').val();subdomain = $('#sp3').val();
//alert("("+log+") ("+pas+")");((log!="")&(pas!=""))
{
$.ajax({ type:'GET',:'index1.php',: "tag=a&col=select user_id from data_users "+
"where UPPER(sysname)=UPPER('"+sysname+"') and UPPER(domain)=UPPER('"+domain+"') "+
"and UPPER(subdomain)=UPPER('"+subdomain+"') and UPPER(login)=UPPER('"+log+"') and password='"+pas+"'",: 3000,: false,: function(data){
//alert(data);
//if (data != "")
// {
$("#logdb").overlay().close();
//alert('Welcome!');.location.href ='patients.htm?Name='+sysname+'&ID='+data+'&Domain='+domain+'&Subdomain='+subdomain;
// }
//else { alert('Неверный логин/пароль'); }
$('#log1').val("");
$('#pas1').val("");
},
});
}e.preventDefault();
});
$("#logdb").overlay({ // Инициализация аутентификационной формы: function() {
//$("#myform1").validator();
//$("#myform1").validator().submit(function(e){
// alert(e.html());
//});
/*$("#myform1").data("validator").onSuccess(function(e, els) {
//alert(els.html());
// we don't want to submit the form. just show events.true;
});*/
$.ajax({:'GET',:'index1.php',: 'tag=option&col=select distinct sysname from decision where LENGTH(sysname)=9',: 3000,: function(data){
//alert(data);
$('#sp1').html("<option value='Please fix this value'>Choose Knowledge base</option>"
+"<option>"+data+"</option>");
},
});
},
});
$('#sp1').change(function() { // Выбор 1-ого списка
$('#sp2').parent().css('display', 'block');
$.ajax({:'GET',:'index1.php',: "tag=option&col=select distinct domain from decision where sysname='"+$('#sp1 option:selected').text()+"'",: 3000,: function(data){
$('#sp2').html("<option value='Please fix this value'> Choose Domain </option>"+"<option>"+data+"</option>");
});
});
$('#sp2').change(function() { // Выбор 2-ого списка
$('#sp3').parent().css('display', 'block');
$.ajax({:'GET',:'index1.php',: "tag=option&col=select distinct subdomain from decision where sysname='"+
$('#sp1 option:selected').text()+"' and domain='"+
$('#sp2 option:selected').text()+"'",: 3000,: function(data){
$('#sp3').html("<option value='Please fix this value'>Choose Subdomain </option>"+"<option>"+data+"</option>");
},
});
});
$("#myform1").bind("onFail", function(e,
errors) { // Красный кант
// we are only doing stuff when the form is submitted(e.originalEvent.type == 'submit') {
// loop through Error objects and add the border color
$.each(errors, function() {input = this.input;.css({borderColor: 'red'}).focus(function() {.css({borderColor: '#444'});
});
});
}
});
$.tools.validator.fn("[minlength]", function(input, value) {min = input.attr("minlength");value.length >= min ? true : {: "Please provide at least " +min+ " character" + (min > 1 ? "s" : ""),
};
});
$('.close').click(function(){}); // Кнопка "Закрыть"
});