我是新来这个存储过程的业务,我相信这是直截了当的只是不熟悉的语法或如何返回。从存储过程中的参数中选择两个表
我传入一个参数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访问它期待这个作为这个过程中的第二个结果集。 (不,我没有找出第一个结果集)第一个结果集将大致相同,检查存储在不同数据库中的两个表之间的差异,但会涉及更多,我只是希望这个结果集第一个工作。
在此先感谢您的帮助。
如果两张表中出现相同的ID,你会怎么做? –
这两个表中的ID应该是唯一的。其中一个将是国家和其他国际人士。通过重复select语句,我可以很好地工作,但是这不会使时间“加倍”,并且将它存储为临时文件不会更快吗?所以 'INTO#tmpNA',然后用'SELECT * FROM #tmp NA'检索 – bbotz
不需要临时表。它会增加一个额外的步骤并会减慢查询。 – ClearLogic