我正在尝试从vb.net中的2 select语句访问结果,但我只能访问第一个select语句中的数据。
CREATE PROCEDURE [dbo].[pr_testproc]
AS
BEGIN
SET NOCOUNT ON;
SELECT
comp_name, p_center, branch_id
FROM
tbl_company B
INNER JOIN
tbl_b_office X ON X.batch_id = B.tran_id
WHERE
X.office_stat = 1
ORDER BY
comp_name ASC;
SELECT
xcomp_name, xp_center, xbranch_id
FROM
tbl_company B
INNER JOIN
tbl_b_office X ON X.batch_id = B.tran_id
WHERE
X.office_stat = 0
AND MONTH(X.post_dt) = MONTH(GETDATE())
AND YEAR(X.post_dt) = YEAR(GETDATE())
ORDER BY
comp_name ASC;
END
示例,如果我尝试获取第二个表中的数据结果
getData(intRow).xcomp_name
这会收到错误:
对象引用未设置为对象的实例。
但这会得到数据
getData(intRow).comp_name
将获得该字段的值。
答案 0 :(得分:2)
将输出数据收集到Dataset
,以便您可以从数据集第0个索引中的select query
获取第一个DataTable
的结果。
今年5月可以帮助你:
Dim myDataSet=GetDataSetFromSP("yourSPName")
Dim FirstResult As DataTable=myDataSet.Tables(0)
Dim SecontResult As DataTable=myDataSet.Tables(1)
在这里,您必须编写将执行SP的函数并返回DataSet
。
答案 1 :(得分:0)
您还可以将2个查询合并为一个。
CREATE PROCEDURE [dbo].[pr_testproc]
AS
BEGIN
SET NOCOUNT ON;
SELECT
comp_name, p_center, branch_id, xcomp_name, xp_center, xbranch_id
FROM
tbl_company B
INNER JOIN
tbl_b_office X ON X.batch_id = B.tran_id
WHERE
X.office_stat = 1
OR
(
X.office_stat = 0
AND MONTH(X.post_dt) = MONTH(GETDATE())
AND YEAR(X.post_dt) = YEAR(GETDATE())
)
ORDER BY
comp_name ASC;
END
然后在代码中,检查office_stat的值并继续相应。