Hier ist eine C#-Funktion, die eine Textzeile an einen bestehenden Textblob anhängt, der durch CRLFs begrenzt ist, und einen T-SQL-Ausdruck zurückgibt, der für INSERT
o UPDATE
Operationen. Es enthält einige unserer proprietären Fehlerbehandlungen, aber wenn Sie das herausnehmen, könnte es hilfreich sein - ich hoffe es.
/// <summary>
/// Generate a SQL string value expression suitable for INSERT/UPDATE operations that prepends
/// the specified line to an existing block of text, assumed to have \r\n delimiters, and
/// truncate at a maximum length.
/// </summary>
/// <param name="sNewLine">Single text line to be prepended to existing text</param>
/// <param name="sOrigLines">Current text value; assumed to be CRLF-delimited</param>
/// <param name="iMaxLen">Integer field length</param>
/// <returns>String: SQL string expression suitable for INSERT/UPDATE operations. Empty on error.</returns>
private string PrependCommentLine(string sNewLine, String sOrigLines, int iMaxLen)
{
String fn = MethodBase.GetCurrentMethod().Name;
try
{
String [] line_array = sOrigLines.Split("\r\n".ToCharArray());
List<string> orig_lines = new List<string>();
foreach(String orig_line in line_array)
{
if (!String.IsNullOrEmpty(orig_line))
{
orig_lines.Add(orig_line);
}
} // end foreach(original line)
String final_comments = "'" + sNewLine + "' + CHAR(13) + CHAR(10) ";
int cum_length = sNewLine.Length + 2;
foreach(String orig_line in orig_lines)
{
String curline = orig_line;
if (cum_length >= iMaxLen) break; // stop appending if we're already over
if ((cum_length+orig_line.Length+2)>=iMaxLen) // If this one will push us over, truncate and warn:
{
Util.HandleAppErr(this, fn, "Truncating comments: " + orig_line);
curline = orig_line.Substring(0, iMaxLen - (cum_length + 3));
}
final_comments += " + '" + curline + "' + CHAR(13) + CHAR(10) \r\n";
cum_length += orig_line.Length + 2;
} // end foreach(second pass on original lines)
return(final_comments);
} // end main try()
catch(Exception exc)
{
Util.HandleExc(this,fn,exc);
return("");
}
}
12 Stimmen
Um Ihre Ausgabe zu testen, vergewissern Sie sich bei Verwendung von SSMS, dass die Option CR/LF beim Kopieren oder Speichern beibehalten aktiviert ist, da sonst alle eingefügten Ergebnisse den Zeilenvorschub verlieren. Sie finden diese Option unter Einstellungen, Abfrageergebnisse, Sql-Server, Ergebnisse in Gitter.
3 Stimmen
@StefanosZilellis und stellen Sie sicher, dass Sie ein neues Abfragefenster öffnen, damit die Einstellungsänderungen wirksam werden.