私はiPhone APPを今日リリースしました。アプリのデータはデータベースから取得しています。テスト中に、テーブルからテーブル3までの4つのテーブルを持つDatasetを返すSPの1つに気付きました。表3では、クライアントによってはWHERE
のクラウスによっては時間がありません。アプリの中で私はそれが存在すると仮定しているので、私が得ている結果は配列の辞書のためです。私はObjectATIndexを直接チェックしています。テーブルが条件を返さず、アプリケーションがクラッシュしたとき。StoredProcedureから行が存在しない場合は、デフォルト値でテーブルを取得します
アプリが今日リリースされて以来、私は今のところコードを変更できません。 テーブルの中にいくつかのデフォルト値を送ることはできますか?
テーブルのための私のクエリは、クエリの上
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- ALTER date: <ALTER Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[_spGetEmpList]
@strComCode as varchar(50),
@iDepID as INT,
@strType AS varchar(20)
AS
BEGIN
DECLARE @bNameOrder as bit
SET NOCOUNT ON;
SELECT @bNameOrder = dbo.svnGetSetupOption(@iDepID,
'LastNamePreceedsFirstName',
@strComCode)
IF (@bNameOrder IS NULL)
SET @bNameOrder = 0
IF(@strType = 'Emp')
BEGIN
--0**************************************
SELECT EmpID AS ResourceID, EmpNumber
FROM Emuloyeetbl
WHERE Emuloyeetbl.IsActive = 1 AND DepID = @iDepID
ORDER BY EmpFName
--1**************************************
SELECT DepartmentName
FROM tblDepartment
WHERE IsActive = 1
--2**************************************
SELECT OptionValue AS EmpRole
FROM EmpRole
WHERE OptionName = 'EmployeeRole' AND DepID = @iDepID AND IsActive = 1
--3**************************************
Select EmployeeFirstName + ' '+EmplouyeeLastName as EmpName
from EmpTable
Where DepID = @iDepID AND EmpSalary < 10
END
END
で任意の行を返しませんが、私のアプリの内部で、私は(私はテーブルが存在すると仮定)テーブルをチェックしています、私ができるどのような方法があるとし行 が存在するかどうかを確認してから、EmpNameに空の値を送信してください。少なくともアプリケーションはCrachを実行しません.....
肯定的な側面では、修正することができますが、完全なSPを投稿してください、あなたの説明に従うことは難しいと思います。あなたはレコードセットとテーブルと用語を混ぜているかもしれません。 – Alex
使用しているSQL Serverのバージョンは? – Alex
私は質問を編集しました。 – user2813740