[SQL]
Wyszukanie wszystkich kluczy obcych:
SELECT obj.name AS FK_NAME,
tab1.name AS [table],
col1.name AS [column],
tab2.name AS [referenced_table],
col2.name AS [referenced_column]
FROM sys.foreign_key_columns fkc
INNER JOIN sys.objects obj
ON obj.object_id = fkc.constraint_object_id
INNER JOIN sys.tables tab1
ON tab1.object_id = fkc.parent_object_id
INNER JOIN sys.schemas sch
ON tab1.schema_id = sch.schema_id
INNER JOIN sys.columns col1
ON col1.column_id = parent_column_id AND col1.object_id = tab1.object_id
INNER JOIN sys.tables tab2
ON tab2.object_id = fkc.referenced_object_id
INNER JOIN sys.columns col2
ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
order by obj.name
Pokazywanie postów oznaczonych etykietą SQL. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą SQL. Pokaż wszystkie posty
poniedziałek, 3 marca 2014
środa, 25 września 2013
SQL - Zapis wyniku SQL do pliku
Poniżej prosty sposób na zapis wyniku zapytania do pliku. Kolejne wywołania będą dopisywały wynik na końcu pliku.
set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on
set colsep ,
spool C:\export_my_table.txt
select * from my_table;
spool off
set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on
set colsep ,
spool C:\export_my_table.txt
select * from my_table;
spool off
piątek, 6 września 2013
JAVA/SQL - Wywołanie procedury SQL z poziomu Java/hibernateTemplate
Kiedy niedawno potrzebowałem wywołać kilka procedur/funkcji z poziomu kodu JAVA z u życiem 'HibernateTemplate' napotkałem na problem kiedy funkcja miała zwracać jakąś wartość.
Poniżej kilka przykładów wywołań:
1) Wywołanie funkcji zwracającej liczbę osób o podanym imieniu i nazwisku:
create or replace PACKAGE EXAMPLE_PACKAGE AS
FUNCTION COUNT_USERS ( fname VARCHAR2, lname VARCHAR2 ) RETURN NUMBER;
END EXAMPLE_PACKAGE;
create or replace PACKAGE BODY EXAMPLE_PACKAGE AS
FUNCTION COUNT_USERS ( fname VARCHAR2, lname VARCHAR2 ) RETURN NUMBER AS
users_count NUMBER(12);
BEGIN
begin
select count(id) into users_count from USERS where f_name = fname and l_name = lname;
exception
when NO_DATA_FOUND then
users_count := 0;
end;
return users_count;
END EXAMPLE_PACKAGE;
public long countUsersByName(final String fname,
final String lname) {
Long result = (Long) hibernateTemplate.execute(new HibernateCallback() {
Long count= null;
public Object doInHibernate(final Session session)
throws HibernateException, SQLException {
session.doWork(new Work() {
public void execute(Connection conn) throws SQLException {
CallableStatement stmt = conn.prepareCall("CALL EXAMPLE_PACKAGE.COUNT_USERS (?,?) into ?");
stmt.setString(1, fname);
stmt.setString(2, lname);
stmt.registerOutParameter(3, OracleTypes.VARCHAR);
stmt.execute();
count= Long.valueOf(stmt.getString(3));
}
});
return count;
}
});
return result;
}
2) Wywołanie procedury niezwracającej wyniku:
public void updateUsers(final String oldUsername,final String newUsername) {
hibernateTemplate.execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Query query = session.createSQLQuery("CALL pck_example.update_username(" +
":old_username, :new_username)");
query.setParameter("old_usernamename", oldUsername);
query.setParameter("new_username", newUsername);
return query.executeUpdate();
}
});
}
Subskrybuj:
Posty (Atom)