diff --git a/packages/web/src/appobj/databaseObjectAppObject.js b/packages/web/src/appobj/databaseObjectAppObject.js
index 771e9d311..2969be0fc 100644
--- a/packages/web/src/appobj/databaseObjectAppObject.js
+++ b/packages/web/src/appobj/databaseObjectAppObject.js
@@ -44,6 +44,10 @@ const menus = {
label: 'Show CREATE PROCEDURE script',
tab: 'SqlObjectCreateScriptTab',
},
+ {
+ label: 'Show EXECUTE script',
+ tab: 'ExecuteProcedureTab',
+ },
],
functions: [
{
diff --git a/packages/web/src/tabs/ExecuteProcedureTab.js b/packages/web/src/tabs/ExecuteProcedureTab.js
new file mode 100644
index 000000000..9bf7fccd4
--- /dev/null
+++ b/packages/web/src/tabs/ExecuteProcedureTab.js
@@ -0,0 +1,16 @@
+import React from 'react';
+import engines from '@dbgate/engines';
+import { useConnectionInfo, useSqlObjectInfo } from '../utility/metadataLoaders';
+import QueryTab from './QueryTab';
+
+export default function ExecuteProcedureTab(props) {
+ const procedureInfo = useSqlObjectInfo(props);
+ const connnection = useConnectionInfo(props);
+ if (!connnection || !procedureInfo) return null;
+
+ const driver = engines(connnection.engine);
+ const dmp = driver.createDumper();
+ if (procedureInfo) dmp.put('^execute %f', procedureInfo);
+
+ return ;
+}
diff --git a/packages/web/src/tabs/QueryTab.js b/packages/web/src/tabs/QueryTab.js
index 4d76f71d0..73f12b502 100644
--- a/packages/web/src/tabs/QueryTab.js
+++ b/packages/web/src/tabs/QueryTab.js
@@ -23,9 +23,9 @@ import keycodes from '../utility/keycodes';
// height: 200px;
// `;
-export default function QueryTab({ tabid, conid, database, tabVisible, toolbarPortalRef }) {
+export default function QueryTab({ tabid, conid, database, tabVisible, toolbarPortalRef, initialScript }) {
const localStorageKey = `sql_${tabid}`;
- const [queryText, setQueryText] = React.useState(() => localStorage.getItem(localStorageKey) || '');
+ const [queryText, setQueryText] = React.useState(() => localStorage.getItem(localStorageKey) || initialScript || '');
const queryTextRef = React.useRef(queryText);
const [sessionId, setSessionId] = React.useState(null);
const [executeNumber, setExecuteNumber] = React.useState(0);
diff --git a/packages/web/src/tabs/SqlObjectCreateScriptTab.js b/packages/web/src/tabs/SqlObjectCreateScriptTab.js
index 93524865b..20bccdbde 100644
--- a/packages/web/src/tabs/SqlObjectCreateScriptTab.js
+++ b/packages/web/src/tabs/SqlObjectCreateScriptTab.js
@@ -1,10 +1,20 @@
import React from 'react';
import { useConnectionInfo, useSqlObjectInfo } from '../utility/metadataLoaders';
import SqlEditor from '../sqleditor/SqlEditor';
+import { useUpdateDatabaseForTab } from '../utility/globalState';
-export default function SqlObjectCreateScriptTab({ objectTypeField, conid, database, schemaName, pureName }) {
+export default function SqlObjectCreateScriptTab({
+ objectTypeField,
+ conid,
+ database,
+ schemaName,
+ pureName,
+ tabVisible,
+}) {
const sqlObjectInfo = useSqlObjectInfo({ conid, database, schemaName, pureName, objectTypeField });
const connnection = useConnectionInfo({ conid });
+ useUpdateDatabaseForTab(tabVisible, conid, database);
+
if (!connnection || !sqlObjectInfo) return null;
return ;
diff --git a/packages/web/src/tabs/index.js b/packages/web/src/tabs/index.js
index deefebce1..81f28d610 100644
--- a/packages/web/src/tabs/index.js
+++ b/packages/web/src/tabs/index.js
@@ -4,6 +4,7 @@ import TableStructureTab from './TableStructureTab';
import TableCreateScriptTab from './TableCreateScriptTab';
import SqlObjectCreateScriptTab from './SqlObjectCreateScriptTab';
import QueryTab from './QueryTab';
+import ExecuteProcedureTab from './ExecuteProcedureTab';
export default {
TableDataTab,
@@ -12,4 +13,5 @@ export default {
TableCreateScriptTab,
QueryTab,
SqlObjectCreateScriptTab,
+ ExecuteProcedureTab,
};