如何在存储过程中退出?
我有一个存储过程,我想尽早摆脱(尝试调试).我已经打过电话RETURN,并RAISERROR和SP在后台继续运行:
CREATE PROCEDURE dbo.Archive_Session @SessionGUID uniqueidentifier AS
print 'before raiserror'
raiserror('this is a raised error', 18, 1)
print 'before return'
return -1
print 'after return'
[snip]
Run Code Online (Sandbox Code Playgroud)
我知道它继续运行,因为我遇到了进一步的错误.我看不到任何印刷品.如果我注释掉大部分存储过程:
CREATE PROCEDURE dbo.Archive_Session @SessionGUID uniqueidentifier AS
print 'before raiserror'
raiserror('this is a raised error', 18, 1)
print 'before return'
return -1
print 'after return'
/*
[snip]
*/
Run Code Online (Sandbox Code Playgroud)
然后我没有得到我的错误,我看到结果:
before raiserror
Server: Msg 50000, Level 18, State 1, Procedure Archive_Session, Line 5
this is a raised error …Run Code Online (Sandbox Code Playgroud) t-sql sql-server stored-procedures sql-server-2000 flow-control
.NET中是否有可用的助手类来构建Url?
例如,如果用户输入字符串:
stackoverflow.com
Run Code Online (Sandbox Code Playgroud)
我试着把它传递给HttpWebRequest:
WebRequest.CreateHttp(url);
Run Code Online (Sandbox Code Playgroud)
它将失败,因为它不是有效的URL(它没有前缀).
我想要的是能够解析用户输入的部分网址:
Uri uri = new Uri(url);
Run Code Online (Sandbox Code Playgroud)
然后修复缺失的部分:
if (uri.Port == 0)
uri.Port = 3333;
if (uri.Scheme == "")
uri.Scheme = "https";
Run Code Online (Sandbox Code Playgroud)
.NET是否有任何可用于解析和操作Uri的类?
用户输入的值(例如stackoverflow.com:3333)有效; 我只需要一个班级来分开它.我尝试使用这个UriBuilder类:
UriBuilder uriBuilder = new UriBuilder("stackoverflow.com:3333");
Run Code Online (Sandbox Code Playgroud)
不幸的是,UriBuilder类无法处理URI:
3333-1stackoverflow.com所以我需要一个能够理解的课程,host:port尤其是当课程不是特别http重要时,尤其如此.
控制台应用.
一些需要解析的URL示例:
server:8088 server:8088/func1server:8088/func1/SubFunc1http://serverhttp://server/func1http://server/func/SubFunc1http://server:8088http://server:8088/func1http://server:8088/func1/SubFunc1magnet://servermagnet://server/func1magnet://server/func/SubFunc1magnet://server:8088 …Visual C运行时抛出一个常见错误:
此应用程序已请求Runtime以不寻常的方式终止它.
有关更多信息,请联系应用程序的支持团队.
这个错误信息实际意味着什么?
让我用一个比喻来解释我正在问的问题.
如果我看到一条消息:
例外:访问冲突(0xc0000005),地址0x702be865
这种访问违规行为与性骚扰无关或有人试图闯入我的计算机(除了一般失败是一个试图阅读我的C驱动器的准将,或者你可能因为执行一次而被拖入监狱的准将Windows 95中的非法操作).
在这种情况下,访问冲突对应于常量EXCEPTION_ACCESS_VIOLATION(winbase.h使用值0xC0000005 声明).这个常量可能的异常错误代码可以在EXCEPTION_RECORD结构中返回.代码ACCESS_VIOLATION意味着程序试图读取或写入内存中不应该的地址.如果你试图从一个从未分配的内存地址中读取,那么你正在做一些非常糟糕的事情 - 而异常告诉你.
它通常是在程序具有指向内存的指针时引起的,该指针不是或不再有效.解决方案是停止尝试访问无效的内存.
注意:我不是问:
- 程序x为什么会出现C0000005错误?
- 为什么我的代码遭到访问冲突?
- 如何调试访问冲突?
因此,如果我问你,是什么原因导致访问冲突,你不会告诉我检查堆栈跟踪,或观察输出窗口,或发布示例代码.你会说,"这是试图访问无效的内存."
回到我的问题.以下错误意味着什么:
此应用程序已请求Runtime以不寻常的方式终止.
我(相当)确定Microsoft Visual C运行时库没有函数:
void TerminateRuntime(bool UnusualWay);
Run Code Online (Sandbox Code Playgroud)
所以我必须弄清楚它实际意味着什么:
换句话说:MSVCRT捕获了什么错误,并隐藏在无法提供信息的错误消息后面?
我执行UPDATE与OUTPUT查询:
UPDATE BatchReports
SET IsProcessed = 1
OUTPUT inserted.BatchFileXml, inserted.ResponseFileXml, deleted.ProcessedDate
WHERE BatchReports.BatchReportGUID = @someGuid
Run Code Online (Sandbox Code Playgroud)
这句话很好,很好; 直到在表上定义了一个触发器.然后我的UPDATE陈述将得到错误334:
如果语句包含没有INTO子句的OUTPUT子句,则DML语句的目标表'BatchReports'不能具有任何已启用的触发器
现在,SQL Server团队在博客文章中解释了这个问题:
错误消息是不言自明的
他们还提供解决方案:
该应用程序已更改为使用INTO子句
除了我无法做出整篇博文的正面或反面.
所以让我问一下我的问题:我应该改变什么UPDATE才能使它有效?
如此处所述:
表行可以分别使用THEAD,TFOOT和TBODY元素分组为表头,表脚和一个或多个表体部分.这种划分使用户代理能够独立于桌面和桌脚支持滚动桌面.
我创建了以下示例,但它不起作用.
HTML:
<table>
<thead>
<tr>
<td>Problem</td>
<td>Solution</td>
</tr>
</thead>
<tbody>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
JS:
$(function() {
for (var i = 0; i < 20; i++) {
var a = Math.floor(10 * Math.random());
var b = Math.floor(10 * Math.random());
var row = $("<tr>").append($("<td>").html(a + " + " + b + " ="))
.append($("<td>").html(a + b));
$("tbody").append(row);
}
});
Run Code Online (Sandbox Code Playgroud)
CSS:
table {
background-color: #aaa;
}
tbody {
background-color: #ddd;
height: 100px;
overflow: auto;
}
td {
padding: …Run Code Online (Sandbox Code Playgroud) 好像是
在很大程度上是相同的,有一个值得注意的例外,就是在发布配置中编译了Debug使用.
你何时会使用一个而不是另一个?到目前为止我唯一能解决的问题就是你使用Debug类来生成只在调试配置中看到的输出,而Trace将保留在发布配置中,但这并没有真正回答我的头.
如果您要对代码进行检测,为什么要使用Debug,因为可以在不重新编译的情况下关闭Trace?
我在ASP.NET中返回XML的任务遇到了很多半解决方案.我不想盲目地复制和粘贴一些恰好在大多数情况下工作的代码; 我想要正确的代码,我想知道它为什么是正确的.我要批评; 我想要信息; 我需要知识; 我想要理解.
下面是代码片段,按照复杂性的增加顺序,代表我看到的一些部分解决方案,包括每个问题引起的一些问题,以及我想在这里回答的问题.
一个彻底的答案必须解决为什么我们必须拥有或不得拥有以下任何东西,或者解释为什么它无关紧要.
最后,想象一下你需要编写一个这样的辅助函数的内容:
///<summary>Use this call inside your (Page_Xxx) method to write the
///xml to the web client. </summary>
///<remarks>See for https://stackoverflow.com/questions/543319/how-to-return-xml-in-asp-net
///for proper usage.</remarks>
public static void ReturnXmlDocumentToWebClient(
XmlDocument document,
Page page)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我看到的每个解决方案都从一个空的aspx页面开始,并从前端文件中删除所有HTML(这会在Visual Studio中导致警告):
<%@ Page Language="C#"
AutoEventWireup="true"
CodeFile="GetTheXml.aspx.cs"
Inherits="GetTheXml" %> …Run Code Online (Sandbox Code Playgroud) 例如伪代码;
textBox1.Clear();
textBox1.Lines.Add("1000+");
textBox1.Lines.Add("750-999");
textBox1.Lines.Add("400-749");
...snip...
textBox1.Lines.Add("40-59");
Run Code Online (Sandbox Code Playgroud)
要么
textBox1.Lines.Append("brown");
textBox1.Lines.Append("brwn");
textBox1.Lines.Append("brn");
textBox1.Lines.Append("brow");
textBox1.Lines.Append("br");
textBox1.Lines.Append("brw");
textBox1.Lines.Append("brwm");
textBox1.Lines.Append("bron");
textBox1.Lines.Append("bwn");
textBox1.Lines.Append("brnw");
textBox1.Lines.Append("bren");
textBox1.Lines.Append("broe");
textBox1.Lines.Append("bewn");
Run Code Online (Sandbox Code Playgroud)
TextBox.Lines实现的唯一方法(我可以看到)是:

How do you use DwmGetColorizationColor?
The documentation says it returns two values:
0xAARRGGBB containing the color used for glass compositionHere's a color that i like, a nice puke green:

You can notice the color is greeny, and the translucent title bar (against a white background) shows the snot color very clearly:

i try to get the color from …
我在我的项目中添加了对log4net程序集dll的引用.
当我建立时,我得到一个警告说:
警告程序集"Lib\log4net.dll"被错误地指定为文件.
当构建过程检测到文件引用实际上是(托管或本机)程序集时,在应用程序清单生成期间会生成此警告.
这正是我正在做的事情; 文件引用是一个程序集.我在这里被告知了什么?
如何在不添加对程序集dll的引用的情况下添加对程序集dll的引用?