if (!$mysqli->query("DROP PROCEDURE IF EXISTS Find_Form") ||
!$mysqli->query('
CREATE PROCEDURE Find_Form(IN Param1 Nvarchar(50)) READS SQL DATA BEGIN
DECLARE Lemma1 Nvarchar(50);
DECLARE Okon1 Nvarchar(50);
DECLARE Osnov Nvarchar(50);
DECLARE SOsnov Nvarchar(50);
DECLARE i1, forma1, Kod_MPosl, ROWCOUNT1 int;
DECLARE DublPARAM1 NVarchar(50);
DECLARE WG1 nvarchar(3);
SET DublParam1=RTRIM(Param1);
SET i1=1;
WHILE i1<=LENGTH(DublParam1) Do
SET Lemma1=SUBSTRING(DublParam1,0,i1);
SET Okon1="";
SET Osnov="";
SET SOsnov="";
SET Okon1=RTRIM(SUBSTRING(DublParam1,i1,100));
SET forma1=0;
SET WG1="";
SET ROWCOUNT1=0;
IF Okon1 != "" THEN
SET Kod_MPosl=0;
SELECT c.forma, WG, Dict_Form, SDICT_FORM, count(SDICT_FORM) INTO forma1,WG1,Osnov,SOsnov,ROWCOUNT1 FROM T_BASE c
WHERE c.SDICT_FORM=Lemma1 AND KolWord=1;
IF ROWCOUNT1!= 0 THEN
IF ROWCOUNT1=1 THEN
IF Forma1 != 0 AND EXISTS(SELECT * FROM T_okon b WHERE okon=Okon1 AND b.forma = forma1 AND instr(WG1,b.WG)>0) THEN
SELECT Lemma1+Okon1 as Slovoforma,Comm as Hint, Lemma1+M_Rule as Morf_Anal, WG1 as WG FROM M_Posled_1 a
WHERE a.Kod_MPosl IN
(SELECT b.Kod_M_Posl FROM T_okon b
WHERE okon=Okon1 AND b.forma = forma1 AND instr(WG1,b.WG)>0) ;
END IF;
ELSE
IF EXISTS(SELECT * FROM T_okon b WHERE okon=Okon1) THEN
SELECT Lemma1+Okon1 as Slovoforma,Comm as Hint, Lemma1+M_Rule, M_1 as WG FROM M_Posled_1 a
WHERE a.Kod_MPosl IN
(SELECT b.Kod_M_Posl FROM T_okon b
WHERE okon=Okon1 AND
b.forma IN (SELECT c.forma FROM T_Base c
WHERE c.SDICT_FORM=Lemma1 AND KolWord=1 )) ;
END IF;
END IF;
END IF;
ELSE
IF EXISTS(SELECT * FROM T_BASE c WHERE c.SDICT_FORM=Lemma1 AND KolWord=1) THEN
SELECT Lemma1,N"основа",WG1 as WG;
END IF;
END IF;
SET i1=i1+1;
END WHILE;
END;
')) {
echo "Не удалось создать хранимую процедуру: (" . $mysqli->errno . ") " . $mysqli->error;
}
|