我是这个存储过程业务的新手,我相信这很简单,只是不熟悉语法或如何返回。
我正在传递参数ID,我想返回有关该ID的信息,但它可能来自两个表中的一个。取决于表格取决于我返回的列。
ALTER PROCEDURE name
@ID varchar (40)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @result int
IF exists (SELECT id, name, state
FROM tab1
WHERE tab1.id = @ID
)
begin
/* return somehow, maybe as a temp table from previous check */
end
else ( SELECT id, name, country, state
FROM tab2
WHERE tab2.id = @ID
)
begin
/* return information from tab2 instead */
end
end
go
检查它们是否以最佳方式存在于表中,还是应该真的是一个连接?我的sql技能是新的,我不确定存储过程中可用的是什么。
我如何归还这些信息? 我的java访问它期望这是此过程中的第二个结果集。 (不,我没有找到第一个结果集)第一个结果集将大致相同,检查存储在不同数据库中的两个表,但将涉及更多,我只是希望这个首先工作。
提前感谢您的帮助。
答案 0 :(得分:0)
如果要从两个表中返回相同的列,可以这样做。如果table1中不存在,则表2中的数据将被选中。
ALTER PROCEDURE name
@ID varchar (40)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @result int
SELECT id, name, state , country FROM tab1 WHERE tab1.id = @ID
UNION ALL
SELECT id, name,state , country FROM tab2 WHERE tab2.id = @ID
AND NOT EXISTS(SELECT 1 FROM tab1 WHERE tab1.id=@ID )