小编Sim*_* T.的帖子

在Oracle 10g中使用Left Join删除

我有以下代码在MS SQL Server中正常工作:

delete grp
from grp
left join my_data
on grp.id1 = my_data.id1
and grp.id2 = my_data.id2
and grp.id3 = my_data.id3
and grp.id4 = my_data.id4
where my_data.id1 is NULL
Run Code Online (Sandbox Code Playgroud)

基本上,我想删除所有可以找到grp并且没有任何等价的事件in my_data.遗憾的是,它在Oracle 10g中不起作用.我尝试使用左连接(+)的旧语法,但它也不起作用.像这样:

delete grp
from grp,
my_data
where grp.id1 = my_data.id1 (+)
and grp.id2 = my_data.id2 (+)
and grp.id3 = my_data.id3 (+)
and grp.id4 = my_data.id4 (+)
and my_data.id1 is NULL
Run Code Online (Sandbox Code Playgroud)

IN如果我没有多个键但是我不知道如何将它用于我的数据,那么一个子句就可以工作.那么,替代方案是什么?

oracle oracle10g

15
推荐指数
3
解决办法
3万
查看次数

安装没有管理员权限的源代码管理

我被迫在工作中使用SourceSafe.这是不可能改变的.我想并行使用另一个源控件来满足我自己的需要.我希望能够保留我的修改历史,轻松分支并合并.我可以安装任何不需要管理员权限的应用程序.我无法安装Python或任何集成在文件资源管理器中的东西.

我不是一个命令行的人,所以GUI是必须的.我设法安装Mercurial但不安装TortoiseHG.msysgit有可能安装,但GUI不是很好.

有什么建议?

version-control mercurial

6
推荐指数
1
解决办法
2070
查看次数

带结构和字符串的C#HashSet

我创建了以下代码来验证一系列"元组"的唯一性:

struct MyTuple
{
   public MyTuple(string a, string b, string c)
   {
      ValA = a; ValB = b; ValC = c;
   }
   private string ValA;
   private string ValB;
   private string ValC;
}

...

HashSet<MyTuple> tupleList = new HashSet<MyTuple>();
Run Code Online (Sandbox Code Playgroud)

如果我是正确的,我将不会得到两个具有相同值的元组,HashSet这要归功于我正在使用一个结构.如果没有实现类IEquatable或类似的东西我就不能有相同的行为(我没有太多挖掘如何做到这一点).

我想知道是否有一些关于我做什么的问题.性能方面,考虑到里面的字符串是引用类型,我不希望结构的使用成为问题.

编辑:我希望我的HashSet永远不会包含两个具有相同值的字符串的元组.换句话说,我希望字符串的行为类似于值类型.

c#

6
推荐指数
1
解决办法
5214
查看次数

如何避免主线挨饿?

我正在做一个补丁来解决一个有点混乱的应用程序中的进度条问题.进度条上的取消用于Thread.Abort执行繁重工作的线程.我把它改为提出取消标志,我可以在线程的战略位置检查.

大部分时间它工作正常但偶尔取消根本不起作用.我想Application.DoEvents在查看旗帜的状态之前我可以做一个(没有重新进入的风险),但我想要一个更"干净"的选择.

如果有人能够提供信息以了解究竟发生了什么以及这些东西如何在幕后工作,我将不胜感激.我想知道如何处理这个问题而不使用BackgroundWorker(就像你在.net 1.1中那样),但我也想知道BackgroundWorker解决那种问题以及它是如何解决的.

编辑:我正在记录你的建议,明天会尝试一些并报告.我最初使用了挥发性bool,我认为我将其更新为自动属性并忘记了volatile.工作线程可以一次又一次地查找缓存的值吗?我不知道怎么会有死锁.工作人员检查标志,因为我设法通过在运行中放置一个断点来打破那里.我总是使用相同的数据集进行测试,大部分时间它都取消了.测试之间唯一的变化就是我按下取消的那一刻.到目前为止,我只在调试中测试过,从VS开始.

编辑2:事实证明,我的问题与我的旗帜或我添加的任何内容无关.这更像是一个WinForm问题.该程序可以调用a ShowDialog(并且已经阻止了另一个ShowDialog).我无法拖动表单,它不会自动刷新.它上面的取消按钮甚至不起作用.当我暂停一切时,这是调用堆栈.

[Code externe]  
    Mrnf.Son.Commun.dll!Mrnf.Son.Commun.Messages.BarreProgressionBase.ShowDialog(System.Windows.Forms.IWin32Window fenetre = {Mrnf.Son.Presentation.Windows.UI.Echanges.AssistantForm}) Ligne 274 + 0xb octets  C#
    Mrnf.Son.Commun.dll!Mrnf.Son.Commun.Controleurs.Utils.AttendreFinTraitement(System.Windows.Forms.Form parent = {Mrnf.Son.Presentation.Windows.UI.Echanges.AssistantForm}, Mrnf.Son.Commun.Messages.BarreProgressionBase progressionBase = {Mrnf.Son.Commun.Messages.BarreProgressionMessage}, System.Threading.Thread thread = {System.Threading.Thread}) Ligne 302 + 0xd octets    C#
    Mrnf.Son.Affaires.dll!Mrnf.Son.Affaires.Persisteurs.Echanges.LecteurDBFGeneriqueCollection.Importer(System.Windows.Forms.Form parent = {Mrnf.Son.Presentation.Windows.UI.Echanges.AssistantForm}) Ligne 95 + 0x1d octets    C#
    Mrnf.Son.Affaires.dll!Mrnf.Son.Affaires.Persisteurs.Echanges.PersisteurModeleEchanges.Importer(Mrnf.Son.Affaires.Entites.Echanges.ModeleEchanges unModele = {Mrnf.Son.Presentation.Windows.Controleurs.Echanges.ModeleEchanges.ModeleEchangesGenerique}, System.Windows.Forms.Form formParent = {Mrnf.Son.Presentation.Windows.UI.Echanges.AssistantForm}) Ligne 1880 + 0xd octets  C#
    Mrnf.Son.Affaires.dll!Mrnf.Son.Affaires.Entites.Echanges.ModeleEchanges.Importer(System.Windows.Forms.Form formParent = {Mrnf.Son.Presentation.Windows.UI.Echanges.AssistantForm}) Ligne 875 + 0x18 octets  C# …

.net c#

5
推荐指数
1
解决办法
1203
查看次数

标签 统计

c# ×2

.net ×1

mercurial ×1

oracle ×1

oracle10g ×1

version-control ×1