Ваш вопрос не завершен. Если вы получаете сообщение об ошибке, как показано ниже, это означает, что порт 8080
уже используется.
The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured.
Action:
Verify the connector's configuration, identify and stop any process that's listening on port 8080, or configure this application to listen on another port.
В этом случае вы можете либо остановить приложение, работающее в этом порту, либо просто использовать другой порт. В вашем файле application.properties
вы можете определить порт как
server.port=8181
Код ниже работ в MS SQL 2005. У меня нет установки Sybase прямо сейчас для тестирования его на этом. Если это работает в Sybase, Вы могли бы использовать временную таблицу (или постоянная таблица) за пределами Вашей хранимой процедуры так, чтобы Вы не имели, изменяют код, который Вы пытаетесь протестировать (не очень хорошая процедура тестирования обычно.)
CREATE TABLE dbo.Test_Proc_Results_To_Table
(
my_id INT NOT NULL,
my_string VARCHAR(20) NOT NULL
)
GO
CREATE PROCEDURE dbo.Test_Proc_Results_To_Table_Proc
AS
BEGIN
SELECT
1 AS my_id,
'one' AS my_string
END
GO
INSERT INTO dbo.Test_Proc_Results_To_Table (my_id, my_string)
EXEC dbo.Test_Proc_Results_To_Table_Proc
GO
SELECT * FROM dbo.Test_Proc_Results_To_Table
GO
В SQL Где угодно 10 и 11 (не см., является ли это ASA или ASE, который Вы спрашиваете о):
SELECT DISTINCT Column1
FROM procName(parameter1, parameter2, parameter3);
У меня нет ASE, и я не уверен, работает ли это над более ранними версиями ASA.
Вы могли составить временную таблицу (#temp) в SP и заполнить набор результатов там. Можно позже выбрать из той же временной таблицы от той же сессии. (Или используйте глобальную временную таблицу в sybase с ##temp синтаксисом),
Это вызвано тем, что то, что Вы хотите сделать (выбор * от исполнительного SP) не непосредственно возможно в sybase
Действительно ли возможно переписать сохраненный proc как функцию, которая возвращает таблицу? На SQL Server это, конечно, возможно. Затем можно сделать...
select
<any columns you like>
from
dbo.myFunc( 'foo', 'bar', 1 )
where
<whatever clauses you like>
order by
<same>
Я не знаком с Sybase, но в MySQL Вы могли использовать IN
параметр для записи одного SQL-запроса для всего этого. Исключая:
select distinct column1 from table where column1 in (your_first_query_with_all_the_arguments)
I don't have Sybase installed right now, so some minor syntactic aspect may be wrong here - I can't check, but I used it extensively in the past: select * into #temp from proc_name('arg1','arg2','arg3') should create the local temp table for you automatically with the right columns. Within the same transaction or begin/end block you can access #temp by select * from #temp.
Единственный реальный путь вокруг этой проблемы состоит в том, чтобы составить таблицу в Вашей базе данных для хранения временных ценностей.
Позволяет говорят, что хранимые процедуры выбирают Column1, Column2 и Column3.
Имейте таблицу (поддающуюся соблазну) с Column1, Column2, Column3, и установите свою хранимую процедуру на следующее:
CREATE PROCEDURE database..proc
AS
BEGIN
DELETE FROM tempTable
INSERT INTO tempTable (Column1, Column2, Column3)
SELECT Column1, Column2, Column3
FROM Table1
END
then for your sql code to select the values have:
exec database..proc
SELECT Column1, Column2, Column3
FROM tempTable
Я надеюсь, что это помогает, я столкнулся с подобными проблемами прежде, и это было лучшим, я мог удаться.