Skip to content

Commit cc1b25b

Browse files
committed
extended stored procedures
1 parent e9e2d2b commit cc1b25b

File tree

4 files changed

+80
-6
lines changed

4 files changed

+80
-6
lines changed

DataCommander/Providers/DataCommander.Providers.SqlServer/DataCommander.Providers.SqlServer.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@
7272
<Prefer32Bit>false</Prefer32Bit>
7373
</PropertyGroup>
7474
<ItemGroup>
75+
<Compile Include="ObjectExplorer\ExtendedStoreProcedureCollectionNode.cs" />
76+
<Compile Include="ObjectExplorer\ExtendedStoreProcedureNode.cs" />
7577
<Compile Include="ObjectExplorer\SqlServerSystemType.cs" />
7678
<Compile Include="SqlServerConnectionStringBuilder.cs" />
7779
<Compile Include="DatabaseObjectMultipartName.cs" />
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
using System.Collections.Generic;
2+
using System.Windows.Forms;
3+
using Foundation.Data;
4+
using Foundation.Data.SqlClient;
5+
6+
namespace DataCommander.Providers.SqlServer.ObjectExplorer
7+
{
8+
internal sealed class ExtendedStoreProcedureCollectionNode : ITreeNode
9+
{
10+
private readonly DatabaseNode _database;
11+
12+
public ExtendedStoreProcedureCollectionNode(DatabaseNode database) => _database = database;
13+
14+
string ITreeNode.Name => "Extended Stored Procedures";
15+
bool ITreeNode.IsLeaf => false;
16+
bool ITreeNode.Sortable => false;
17+
string ITreeNode.Query => null;
18+
ContextMenuStrip ITreeNode.ContextMenu => null;
19+
20+
IEnumerable<ITreeNode> ITreeNode.GetChildren(bool refresh)
21+
{
22+
var executor = new SqlCommandExecutor(_database.Databases.Server.ConnectionString);
23+
var commandText = @"select
24+
s.name,
25+
o.name
26+
from sys.all_objects o
27+
join sys.schemas s
28+
on o.schema_id = s.schema_id
29+
where o.type = 'X'
30+
order by 1,2";
31+
var request = new ExecuteReaderRequest(commandText);
32+
var childNodes = executor.ExecuteReader(request, dataRecord =>
33+
{
34+
var schema = dataRecord.GetString(0);
35+
var name = dataRecord.GetString(1);
36+
return new ExtendedStoreProcedureNode(_database, schema, name);
37+
});
38+
return childNodes;
39+
}
40+
}
41+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Windows.Forms;
4+
5+
namespace DataCommander.Providers.SqlServer.ObjectExplorer
6+
{
7+
internal sealed class ExtendedStoreProcedureNode : ITreeNode
8+
{
9+
private readonly DatabaseNode _database;
10+
private readonly string _schema;
11+
private readonly string _name;
12+
13+
public ExtendedStoreProcedureNode(DatabaseNode database, string schema, string name)
14+
{
15+
_database = database;
16+
_schema = schema;
17+
_name = name;
18+
}
19+
20+
string ITreeNode.Name => $"{_schema}.{_name}";
21+
bool ITreeNode.IsLeaf => true;
22+
bool ITreeNode.Sortable => false;
23+
string ITreeNode.Query => null;
24+
ContextMenuStrip ITreeNode.ContextMenu => null;
25+
IEnumerable<ITreeNode> ITreeNode.GetChildren(bool refresh) => throw new NotSupportedException();
26+
}
27+
}

DataCommander/Providers/DataCommander.Providers.SqlServer/ObjectExplorer/ProgrammabilityNode.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,16 @@ internal sealed class ProgrammabilityNode : ITreeNode
1414

1515
IEnumerable<ITreeNode> ITreeNode.GetChildren(bool refresh)
1616
{
17-
return new ITreeNode[]
18-
{
19-
new StoredProcedureCollectionNode(_database, false),
20-
new FunctionCollectionNode(_database),
21-
new UserDefinedTableTypeCollectionNode(_database)
22-
};
17+
var childNodes = new List<ITreeNode>();
18+
childNodes.Add(new StoredProcedureCollectionNode(_database, false));
19+
childNodes.Add(new FunctionCollectionNode(_database));
20+
21+
if (_database.Name == "master")
22+
childNodes.Add(new ExtendedStoreProcedureCollectionNode(_database));
23+
24+
childNodes.Add(new UserDefinedTableTypeCollectionNode(_database));
25+
26+
return childNodes;
2327
}
2428

2529
bool ITreeNode.Sortable => false;

0 commit comments

Comments
 (0)