提交 f0d12e00 编写于 作者: S serge-rider

#2750 SQL Server procedure definition read fix

上级 7081f0f9
......@@ -23,6 +23,7 @@ import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.generic.model.*;
import org.jkiss.dbeaver.ext.generic.model.meta.GenericMetaModel;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBPEvaluationContext;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.exec.DBCQueryTransformProvider;
import org.jkiss.dbeaver.model.exec.DBCQueryTransformType;
......@@ -79,6 +80,23 @@ public class SQLServerMetaModel extends GenericMetaModel implements DBCQueryTran
@Override
public String getProcedureDDL(DBRProgressMonitor monitor, GenericProcedure sourceObject) throws DBException {
if (isSqlServer()) {
try (JDBCSession session = DBUtils.openMetaSession(monitor, sourceObject.getDataSource(), "Read routine definition")) {
try (JDBCPreparedStatement dbStat = session.prepareStatement(
"SELECT definition FROM " + DBUtils.getQuotedIdentifier(sourceObject.getCatalog()) + ".sys.sql_modules WHERE object_id=OBJECT_ID(?)"
)) {
dbStat.setString(1, sourceObject.getFullyQualifiedName(DBPEvaluationContext.DML));
try (JDBCResultSet dbResult = dbStat.executeQuery()) {
if (dbResult.nextRow()) {
return dbResult.getString(1);
}
return "-- Routine '" + sourceObject.getName() + "' definition not found in ";
}
}
} catch (SQLException e) {
throw new DBException(e, sourceObject.getDataSource());
}
}
return extractSource(monitor, sourceObject.getDataSource(), sourceObject.getCatalog().getName(), sourceObject.getSchema().getName(), sourceObject.getName());
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册