у Кого-либо есть хороший опыт с "портом" базы данных от SQL Server до MySQL?
Это должно быть довольно болезненно! Я переключил версии MySQL от 4.x до 5.x, и различные операторы не будут больше работать, когда они привыкли для. Запрос анализатор был "улучшен" так операторы, которые ранее были настроены для производительности, не будет работать больше как ожидалось.
урок, извлеченный из работы с базой данных MySQL на 500 ГБ: это - тонкая тема и почти тривиальный!
У Oracle есть объекты, но они ... разные. Не совсем уверен в своем вопросе, хотите ли вы увидеть значения свойств или действительно увидеть тип.
CREATE OR REPLACE TYPE MY_TYPE IS OBJECT (
MyString Varchar(20)
, counter Number(9)
);
Теперь запустите для него некоторый код.
DECLARE
myType MY_TYPE;
BEGIN
myType := MY_TYPE('ABC123',0);
-- To see the values reference the properties
DBMS_OUTPUT.PUT_LINE(myType.mystring);
-- To see they TYPE of the OBJECT
DBMS_OUTPUT.PUT_LINE(SYS.ANYDATA.CONVERTOBJECT(myType).getTypeName());
END;
Конечно, вы можете создать методы для объекта, который будет возвращать информация для вас немного проще.
CREATE OR REPLACE TYPE MY_TYPE IS OBJECT (
MyString Varchar(20)
, counter Number(9)
, MEMBER FUNCTION getType RETURN VARCHAR2
, MEMBER FUNCTION toString RETURN VARCHAR2
)
/
CREATE OR REPLACE TYPE BODY MY_TYPE
AS
MEMBER FUNCTION getTYPE RETURN VARCHAR2 IS
BEGIN
RETURN SYS.ANYDATA.CONVERTOBJECT(SELF).getTypeName();
END;
MEMBER FUNCTION toString RETURN VARCHAR2 IS
BEGIN
RETURN 'MY_TYPE('||self.mystring||','||self.counter||')';
END;
END;
/
Теперь вы можете вызывать функции объекта, что упрощает чтение imo.
DECLARE
mytype MY_TYPE;
BEGIN
mytype := MY_TYPE('AGAIN','0');
DBMS_OUTPUT.PUT_LINE(mytype.toString);
DBMS_OUTPUT.PUT_LINE(mytype.getType);
END;