У меня проблема при сравнении varchar, nvarchar2 или varchar2 с переменной QString, которую я передаю в базу данных Oracle.
CREATE TABLE Korisnici
(
id_korisnika varchar(200) PRIMARY KEY,
ime_korisnika varchar2(200),
prezime_korisnika varchar2(200),
broj_telefona varchar2(30),
adresa_korisnika varchar2(400)
)
/
и вот моя процедура:
//procedure for updating user
CREATE OR REPLACE PROCEDURE Update_korisnika(
stari_id IN varchar,
novo_ime_korisnika IN varchar2,
novo_prezime_korisnika IN varchar2,
novi_broj_telefona_korisnika IN varchar2,
nova_adresa_korisnika IN varchar2)
IS
BEGIN
UPDATE Korisnici
SET Korisnici.ime_korisnika=novo_ime_korisnika
, Korisnici.prezime_korisnika=novo_prezime_korisnika
, Korisnici.broj_telefona=novi_broj_telefona_korisnika
, Korisnici.adresa_korisnika=nova_adresa_korisnika
WHERE Korisnici.id_korisnika=stari_id;
COMMIT;
END;
/
И код qtиз которого я отправляю char при отладке:
//this is for updateing user
void MainWindow::promjeni_korisnika(const QString& id, const QString& ime, const QString& prezime, const QString& broj, const QString& adresa)
{
//parametri
init();
QUrl params;
params.addQueryItem("action","Update_korisnika");
params.addQueryItem("id",id);
params.addQueryItem("ime",ime);
params.addQueryItem("prezime",prezime);
params.addQueryItem("broj",broj);
params.addQueryItem("adresa",adresa);
QByteArray data;
data.append(params.toString());
data.remove(0,1);
QNetworkRequest request;
request.setUrl(url);
request.setHeader(QNetworkRequest::ContentTypeHeader,
QVariant("application/x-www-form-urlencoded"));
manager->post(request, data);
MainWindow::dataList.clear();
Citanje_korisnika();
}
Так что у меня проблема только с процедурами, которые используют ID, как заставить все это работать.Какой тип данных должен быть этот идентификатор, который можно сравнить, чтобы я мог его использовать.
РЕДАКТИРОВАТЬ: это функция QML, которая отправляет данные в функцию QT выше:
funkcije.promjeni_korisnika(text_input5.text,text_input1.text,text_input2.text,text_input3.text,text_input4.text);
затем эта частьскрипта принимает данные:
Update_korisnika($poslani_ar,$id=$_POST['id_korisnika'],$ime=$_POST['ime'],$prezime=$_POST['prezime'],$broj=$_POST['broj'],$adresa=$_POST['adresa']);
, а затем эта часть вызывает этот код:
function Update_korisnika($poslani_ar,$id,$ime,$prezime,$broj,$adresa)
{
$imenik = new Imenik($poslani_ar,$id,$ime,$prezime,$broj,$adresa);
$imenik->Update_korisnika();
}
затем:
function Update_korisnika(){
$query='BEGIN Update_korisnika(:id_korisnika,:ime_korisnika,:prezime_korisnika,:broj_telefona,:adresa);END;';
$result=$this->connector->Exec($this->poslani_argument,$query,$this->id_korisnika,$this->ime_korisnika,$this->prezime_korisnika,$this->broj_telefona,$this->adresa);
//echo $ArrayToXml->toXml($result);
}
и в конце имеет только скрипт, которыйвыполнить все вещи.Я не ставил никаких конструкторов и ненужных вещей.Это часть кода, которая, например, работает вместе.
Как я могу отследить его при запуске PHP.