Вы пытались сначала использовать автофокус, вот способ сделать это:
private lateinit var cameraLocal: Camera
//...
/**
* Setting the right parameters in the camera
*/
private fun applyCameraSettings(quality: Int) {
val params = getCameraParams()
params.setPictureSize(getDefaultWidth(), getDefaultHeight())
params.pictureFormat = PixelFormat.JPEG
params.jpegQuality = quality
params.focusMode = if (params.focusMode == Camera.Parameters.FOCUS_MODE_AUTO) Camera.Parameters.FOCUS_MODE_AUTO else params.focusMode
cameraLocal.parameters = params
}
/**
* get the camera parameters
*/
private fun getCameraParams(): Camera.Parameters {
return cameraLocal.parameters
}
Моя последняя работа, мы мигрируем из Windows в OpenSuse 11.
Я провожу день в процессе установки (только 4 часа, чтобы появилось первый экран настройки оракула), но теперь пользователи подтверждают мне, что время всех запросов теперь лучше, поэтому я рекомендую его.
сам вызов RAISEERROR () завершится ошибкой , и скрипт продолжит выполнение .The noexec метод
Другой метод, который работает с операторами GO, установлен noexec в
. Это приводит к тому, что остальная часть сценария будет пропущена. Это не прерывает соединение, но вам нужно снова отключить noexec
перед выполнением каких-либо команд.
Пример:
print 'hi'
go
print 'Fatal error, script will not continue!'
set noexec on
print 'ho'
go
-- last line of the script
set noexec off -- Turn execution back on; only needed in SSMS, so as to be able
-- to run this script again in the same session.
Просто используйте ВОЗВРАТ (он будет работать как внутри, так и снаружи хранимой процедуры).
Я использую RETURN
здесь все время, работы в сценарии или Stored Procedure
Удостоверяются Вы ROLLBACK
транзакция, если Вы будете в одном, то иначе RETURN
сразу приведет к открытой незафиксированной транзакции
Ни одна из этих работ с операторами 'GO'. В этом коде, независимо от того, равняется ли серьезность 10 или 11, Вы получаете заключительный оператор печати.
Сценарий тестирования:
-- =================================
PRINT 'Start Test 1 - RAISERROR'
IF 1 = 1 BEGIN
RAISERROR('Error 1, level 11', 11, 1)
RETURN
END
IF 1 = 1 BEGIN
RAISERROR('Error 2, level 11', 11, 1)
RETURN
END
GO
PRINT 'Test 1 - After GO'
GO
-- =================================
PRINT 'Start Test 2 - Try/Catch'
BEGIN TRY
SELECT (1 / 0) AS CauseError
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS ErrorMessage
RAISERROR('Error in TRY, level 11', 11, 1)
RETURN
END CATCH
GO
PRINT 'Test 2 - After GO'
GO
Результаты:
Start Test 1 - RAISERROR
Msg 50000, Level 11, State 1, Line 5
Error 1, level 11
Test 1 - After GO
Start Test 2 - Try/Catch
CauseError
-----------
ErrorMessage
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Divide by zero error encountered.
Msg 50000, Level 11, State 1, Line 10
Error in TRY, level 11
Test 2 - After GO
единственный способ сделать эту работу состоит в том, чтобы записать сценарий без GO
операторы. Иногда это легко. Иногда это довольно трудно. (Используйте что-то как IF @error <> 0 BEGIN ...
.)
Действительно ли это - хранимая процедура? Если так, я думаю, что Вы могли просто сделать Возврат, такой как "ПУСТОЙ УКАЗАТЕЛЬ Возврата";
Вы могли обернуть свой SQL-оператор в НЕКОТОРОЕ ВРЕМЯ цикл и использовать ПОВРЕЖДЕНИЕ в случае необходимости
WHILE 1 = 1
BEGIN
-- Do work here
-- If you need to stop execution then use a BREAK
BREAK; --Make sure to have this break at the end to prevent infinite loop
END
Я не использовал бы SQL RAISERROR-, имеет операторы IF, которые могут использоваться с этой целью. Сделайте свою проверку и поиски и установите локальные переменные, затем используйте значение переменных в операторах IF для создания условного выражения вставок.
Вы не должны были бы проверять переменный результат каждой валидации. Вы могли обычно делать это только с одной переменной флага, чтобы подтвердить, что все условия передали:
declare @valid bit
set @valid = 1
if -- Condition(s)
begin
print 'Condition(s) failed.'
set @valid = 0
end
-- Additional validation with similar structure
-- Final check that validation passed
if @valid = 1
begin
print 'Validation succeeded.'
-- Do work
end
, Даже если Ваша проверка более сложна, необходимо только быть нужны несколько переменных флага для включения в последнюю проверку (проверки).
Я предложил бы, чтобы Вы обернули свой соответствующий блок кода в блок выгоды попытки. Можно тогда использовать событие Raiserror с серьезностью 11 для повреждения к блоку выгоды, если Вы желаете. Если Вы просто хотите к raiserrors, но продолжаете, выполнение в блоке попытки тогда используют более низкую серьезность.
Имеют смысл?
С наилучшими пожеланиями, John
[Отредактированный для включения Ссылки BOL]
http://msdn.microsoft.com/en-us/library/ms175976 (SQL.90) .aspx
Спасибо за ответ!
raiserror()
хорошо работает, но Вы не должны забывать return
оператор иначе сценарий продолжается без ошибки! (следовательно raiserror не является "throwerror" и конечно выполнением отката при необходимости!
raiserror()
хорошо сказать человеку, который выполняет сценарий, что что-то пошло не так, как надо.
Если вы можете использовать режим SQLCMD, то заклинание
:on error exit
(ВКЛЮЧАЯ двоеточие) заставит RAISERROR фактически остановить скрипт. Например,
:on error exit
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SOMETABLE]') AND type in (N'U'))
RaisError ('This is not a Valid Instance Database', 15, 10)
GO
print 'Keep Working'
выведет:
Msg 50000, Level 15, State 10, Line 3
This is not a Valid Instance Database
** An error was encountered during execution of batch. Exiting.
, и пакет будет остановлен. Если режим SQLCMD не включен, вы получите ошибку синтаксического анализа двоеточия. К сожалению, это не совсем надежно, так как если скрипт запускается, не находясь в режиме SQLCMD, SQL Managment Studio проскакивает мимо даже ошибок времени синтаксического анализа! Тем не менее, если вы запускаете их из командной строки, это нормально.
Дальнейшее уточнение метода Sglasses, приведенные выше строки заставляют использовать режим SQLCMD и либо обрабатывают сценарий, если не используется режим SQLCMD, либо использует : при ошибке выход
для выхода в любая ошибка
CONTEXT_INFO используется для отслеживания состояния.
SET CONTEXT_INFO 0x1 --Just to make sure everything's ok
GO
--treminate the script on any error. (Requires SQLCMD mode)
:on error exit
--If not in SQLCMD mode the above line will generate an error, so the next line won't hit
SET CONTEXT_INFO 0x2
GO
--make sure to use SQLCMD mode ( :on error needs that)
IF CONTEXT_INFO()<>0x2
BEGIN
SELECT CONTEXT_INFO()
SELECT 'This script must be run in SQLCMD mode! (To enable it go to (Management Studio) Query->SQLCMD mode)\nPlease abort the script!'
RAISERROR('This script must be run in SQLCMD mode! (To enable it go to (Management Studio) Query->SQLCMD mode)\nPlease abort the script!',16,1) WITH NOWAIT
WAITFOR DELAY '02:00'; --wait for the user to read the message, and terminate the script manually
END
GO
----------------------------------------------------------------------------------
----THE ACTUAL SCRIPT BEGINS HERE-------------