Поскольку ggplot
слои рисуются в порядке их получения, вы можете нарисовать geom_hline
ниже пунктирного (такого же размера, как линии сетки или больше), сделать его таким же цветом, как фоновая заливка, и это заблокирует линию сетки.
В простом случае вы знаете цвет фона (в данном случае он белый):
library(ggplot2)
ggplot(data = NULL) +
geom_hline(yintercept = 0, size = 2, color = "white") +
geom_hline(yintercept = 0, linetype = 4, size = 2) +
theme_minimal() +
theme(panel.grid = element_line(size = 2))
Чтобы сделать его более динамичным и соответствовать с темами, заполните фон сюжета темы и установите его в качестве цвета:
ggplot(data = NULL) +
geom_hline(yintercept = 0, size = 2,
color = theme_dark()$panel.background$fill) +
geom_hline(yintercept = 0, linetype = 4, size = 2) +
theme_dark() +
theme(panel.grid = element_line(size = 2))
Кажется, я нашел решение .
Итак, то, что я могу сделать в моем сценарии SQL, выглядит примерно так (код sql-psuedo):
create table #tmp(xmlReply varchar(2048))
while not_done
begin
select top 1 record from updateTable where processed = 0
insert into #tmp exec insertSomeData @param=record
end
drop table #tmp
Вот если бы был еще более эффективный способ сделать это. Есть ли в SQL Server что-то похожее на / dev / null? Пустая таблица или что-то в этом роде?
Чувак, это серьезно случай, когда компьютер делает то, что вы ему сказали, вместо того, что вы хотели , чтобы он делал.
Если вы этого не сделаете. хотите, чтобы он возвращал результаты, тогда не просите вернуть результаты. Измените структуру этой хранимой процедуры на две:
CREATE PROCEDURE [dbo].[insertSomeData] (@myParam int) AS
BEGIN
DECLARE @reply varchar(2048)
--... Do a bunch of inserts/updates...
EXEC SelectOutput
END
GO
CREATE PROCEDURE SelectOutput AS
BEGIN
SET @reply = '<xml><big /><outputs /></xml>'
SELECT @reply
END
From which client are you calling the stored procedure? Say it was from C#, and you're calling it like:
var com = myConnection.CreateCommand();
com.CommandText = "exec insertSomeData 1";
var read = com.ExecuteReader();
This will not yet retrieve the result from the server; you have to call Read() for that:
read.Read();
var myBigString = read[0].ToString();
So if you don't call Read, the XML won't leave the Sql Server. You can even call the procedure with ExecuteNonQuery:
var com = myConnection.CreateCommand();
com.CommandText = "exec insertSomeData 1";
com.ExecuteNonQuery();
Here the client won't even ask for the result of the select.
Вы можете создать хранимую процедуру SQL CLR, которая выполняет это. Должно быть довольно просто.
Я не знаю, есть ли у SQL Server возможность подавления вывода (я не думаю, что это так), но в SQL Query Analyzer есть опция (на вкладке результатов) «Отменить Результаты ».
Вы запускаете это через isql?
You said your server is crashing. What is crashing the application that consumes the output of this SQL or SQL Server itself (assuming SQL Server).
If you are using .Net Framework application to call the stored procedure then take a look at SQLCommand.ExecuteNonQuery. This just executes stored procedure with no results returned. If problem is at SQL Server level then you are going to have to do something different (i.e. change the stored procedure).
когда-либо пробовали ВКЛЮЧИТЬ НЕТ СЧЕТА;
как вариант?