What does the following program print?
Anonymous Quiz
11%
true
15%
false
44%
truefalse
29%
(It prints nothing)
What is the behavior of the following program?
Anonymous Quiz
21%
It prints 0 0 0.
17%
It prints 0 1 0.
21%
It prints 0 1 1.
41%
It fails to compile.
What does the following program print?
Anonymous Quiz
22%
2 | 2
21%
2 | 210
47%
210 | 210
11%
210 | 2
What does the following program print?
Anonymous Quiz
28%
false false 9
8%
false true 9
12%
true false 9
34%
true true 9
5%
false false 1
3%
false true 1
4%
true false 1
5%
true true 1
Использование пакетных функций pl/sql в коде golang
Я пытаюсь запустить функцию в пакете в ручке моего API и получаю сообщение об ошибке: call register type before use user defined type (UDT)
Запустил саму функцию через SQL запрос и она сработала значит ошибка в самом хэндлере, SOS, мучаюсь уже несколько часов вот код
возможно я не правильно вызываю эту функцибю, для подключения к бд использую драйвер github.com/sijms/go-ora/v2. обычные процедуры запускаются без проблем, как вариант написать процедуру под ручку, но я ек хочу таким образом говнокодить, так что надежда пока на вас. вот сам код, в котором вызываю функцию:
var responsibleID string
query := `
BEGIN
:1 := MYDB.RESPONSIBLE_BO.GetContractorIDByName(:2);
END;
`
err = tx.QueryRow(query, sql.Out{Dest: &responsibleID}, req.ResponsibleName).Scan(&responsibleID)
if err != nil {
log.Println("Failed to get ResponsibleID:", err)
ctx.SetStatus(apieasy.InternalServerError, "Failed to get ResponsibleID, error: %v", err)
return
}
Пробовал объявлять переменную, в которую записываю данные из бд:
query := `
DECLARE
v_contractor_id CHAR;
BEGIN
v_contractor_id := MYDB.RESPONSIBLE_BO.GetContractorIDByName(:1);
:2 := contractor_id;
END;
`
не помогло.
вот сам код функции, если будет нужно:
FUNCTION GetContractorIDByName (i_sNAME IN VARCHAR2)
RETURN CHAR
IS
v_res CONTRACTOR.CONTRACTORID % TYPE;
BEGIN
IF (i_sNAME IS NOT NULL)
THEN
BEGIN
SELECT CONTRACTORID
INTO v_res
FROM CONTRACTOR
WHERE NAME = i_sNAME;
EXCEPTION
WHEN NO_DATA_FOUND THEN
CREATECONTRACTOR (i_sNAME, NULL, NULL, 'created by function GetContractorIDByName', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0);
COMMIT;
BEGIN
SELECT CONTRACTORID
INTO v_res
FROM CONTRACTOR
WHERE NAME = i_sNAME;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20002, 'Failed to retrieve newly created contractor TRY AGAIN');
END;
END;
ELSE
RAISE_APPLICATION_ERROR(-20001, 'Undefined nom name');
END IF;
RETURN v_res;
END GetContractorIDByName;
Я пытаюсь запустить функцию в пакете в ручке моего API и получаю сообщение об ошибке: call register type before use user defined type (UDT)
Запустил саму функцию через SQL запрос и она сработала значит ошибка в самом хэндлере, SOS, мучаюсь уже несколько часов вот код
возможно я не правильно вызываю эту функцибю, для подключения к бд использую драйвер github.com/sijms/go-ora/v2. обычные процедуры запускаются без проблем, как вариант написать процедуру под ручку, но я ек хочу таким образом говнокодить, так что надежда пока на вас. вот сам код, в котором вызываю функцию:
var responsibleID string
query := `
BEGIN
:1 := MYDB.RESPONSIBLE_BO.GetContractorIDByName(:2);
END;
`
err = tx.QueryRow(query, sql.Out{Dest: &responsibleID}, req.ResponsibleName).Scan(&responsibleID)
if err != nil {
log.Println("Failed to get ResponsibleID:", err)
ctx.SetStatus(apieasy.InternalServerError, "Failed to get ResponsibleID, error: %v", err)
return
}
Пробовал объявлять переменную, в которую записываю данные из бд:
query := `
DECLARE
v_contractor_id CHAR;
BEGIN
v_contractor_id := MYDB.RESPONSIBLE_BO.GetContractorIDByName(:1);
:2 := contractor_id;
END;
`
не помогло.
вот сам код функции, если будет нужно:
FUNCTION GetContractorIDByName (i_sNAME IN VARCHAR2)
RETURN CHAR
IS
v_res CONTRACTOR.CONTRACTORID % TYPE;
BEGIN
IF (i_sNAME IS NOT NULL)
THEN
BEGIN
SELECT CONTRACTORID
INTO v_res
FROM CONTRACTOR
WHERE NAME = i_sNAME;
EXCEPTION
WHEN NO_DATA_FOUND THEN
CREATECONTRACTOR (i_sNAME, NULL, NULL, 'created by function GetContractorIDByName', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0);
COMMIT;
BEGIN
SELECT CONTRACTORID
INTO v_res
FROM CONTRACTOR
WHERE NAME = i_sNAME;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20002, 'Failed to retrieve newly created contractor TRY AGAIN');
END;
END;
ELSE
RAISE_APPLICATION_ERROR(-20001, 'Undefined nom name');
END IF;
RETURN v_res;
END GetContractorIDByName;
Как считать текст с изображения
Установил тессеракт на убунту
add-apt-repository -y ppa:alex-p/tesseract-ocr-devel && \
apt-get -y update && apt install -y tesseract-ocr* && \
apt install -y libtesseract-dev*`
Испортировал пакет для работы с ним.
go get -t github.com/otiai10/gosseract/v2
Сделал фотку счетчика воды
Фотка
и положил его в папку с main
Написал код по примеру отсюда
package main
import (
"log"
"github.com/otiai10/gosseract/v2"
)
func main() {
client := gosseract.NewClient()
defer client.Close()
client.SetImage("img.png")
text, err := client.Text()
if err != nil {
log.Println(err, "<---")
return
}
log.Println(text)
}
Запустил код
go run .
На выходе ожидал
2024/07/16 12:53:55 00142899
А получил:
2024/07/16 12:53:55 % oi , i
tes a 4
4
А как собстна получить то что я ожидал?
Установил тессеракт на убунту
add-apt-repository -y ppa:alex-p/tesseract-ocr-devel && \
apt-get -y update && apt install -y tesseract-ocr* && \
apt install -y libtesseract-dev*`
Испортировал пакет для работы с ним.
go get -t github.com/otiai10/gosseract/v2
Сделал фотку счетчика воды
Фотка
и положил его в папку с main
Написал код по примеру отсюда
package main
import (
"log"
"github.com/otiai10/gosseract/v2"
)
func main() {
client := gosseract.NewClient()
defer client.Close()
client.SetImage("img.png")
text, err := client.Text()
if err != nil {
log.Println(err, "<---")
return
}
log.Println(text)
}
Запустил код
go run .
На выходе ожидал
2024/07/16 12:53:55 00142899
А получил:
2024/07/16 12:53:55 % oi , i
tes a 4
4
А как собстна получить то что я ожидал?