runstoredprocedure

Вызовите хранимую процедуру с и без аргументов ввода и вывода

Описание

Это вызовы функции хранимая процедура, которая не имеет никаких входных параметров, никаких выходных аргументов или любой комбинации аргументов ввода и вывода. Задайте и инстанцируйте этой хранимой процедуры в своей базе данных.

Можно использовать эту функцию, если вы соединяетесь со своей базой данных с помощью драйвера JDBC. Для получения дополнительной информации смотрите Соединение с Базой данных. Если вы используете нативный интерфейс ODBC, чтобы соединиться с вашей базой данных, используйте exec вызывать хранимую процедуру.

пример

results = runstoredprocedure(conn,spname) вызывает хранимую процедуру spname использование соединения с базой данных conn. results логический 1 если хранимая процедура возвращает набор данных. В противном случае, results логический 0.

пример

results = runstoredprocedure(conn,spname,inputargs) вызывает хранимую процедуру, которая принимает один или несколько входных параметров inputargs.

пример

results = runstoredprocedure(conn,spname,inputargs,outputtypes) вызывает хранимую процедуру, которая возвращает выходные аргументы путем определения типов данных выходного аргумента outputtypes. results массив ячеек, который содержит один или несколько выходных аргументов.

Примеры

свернуть все

Задайте хранимую процедуру под названием create_table это составляет таблицу под названием test_table путем выполнения этого кода. Эта процедура не имеет никаких аргументов ввода или вывода. Этот код принимает, что вы используете базу данных Microsoft® SQL Server®.

CREATE PROCEDURE create_table 
	
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

CREATE TABLE test_table
	 (
		CATEGORY_ID     INTEGER     IDENTITY PRIMARY KEY,
		CATEGORY_DESC   CHAR(50)    NOT NULL
        );
	
END
GO

Создайте соединение с базой данных Microsoft SQL Server conn использование драйвера JDBC. Для получения дополнительной информации смотрите Соединение с Базой данных. Затем вызовите хранимую процедуру create_table использование соединения с базой данных conn.

results = runstoredprocedure(conn,'create_table')
results = 

   0

results возвращается 0 потому что вызов create_table не возвращает набор данных.

Проверяйте свою базу данных на новую таблицу под названием test_table.

Закройте соединение с базой данных conn.

close(conn)

Задайте хранимую процедуру под названием insert_data это вставляет описание категории в таблицу под названием test_create путем выполнения этого кода. Эта процедура имеет один входной параметр data. Этот код принимает, что вы используете базу данных Microsoft SQL Server.

CREATE PROCEDURE insert_data 
	@data varchar(50)

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	INSERT INTO test_create (CATEGORY_DESC) 
	VALUES (@data)
END
GO

Создайте соединение с базой данных Microsoft SQL Server conn использование драйвера JDBC. Для получения дополнительной информации смотрите Соединение с Базой данных. Затем вызовите хранимую процедуру insert_data использование соединения с базой данных conn с описанием категории Apples как входной параметр.

inputarg = {'Apples'};

results = runstoredprocedure(conn,'insert_data',inputarg)
results =

   0

results возвращается 0 потому что вызов insert_data не возвращает набор данных.

Таблица test_create добавляет строка где столбец CATEGORY_ID равняется 1 и столбец CATEGORY_DESCRIPTION равняется Apples.

CATEGORY_ID первичный ключ таблицы test_create. Этот первичный ключ постепенно увеличивается автоматически. CATEGORY_ID равняется 1 при вызове insert_data впервые.

Закройте соединение с базой данных conn.

close(conn)

Задайте хранимую процедуру под названием maxDecVolume это выбирает максимальный объем продаж в декабре путем выполнения этого кода. Эта процедура имеет один выходной аргумент data и никакие входные параметры. Этот код принимает, что вы используете базу данных Microsoft SQL Server.

CREATE PROCEDURE maxDecVolume
	@data int OUTPUT 
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

 	SELECT @data = max(December) FROM salesVolume
END

GO

Создайте соединение с базой данных Microsoft SQL Server conn использование драйвера JDBC. Для получения дополнительной информации смотрите Соединение с Базой данных. Затем вызовите использование хранимой процедуры:

  • Соединение с базой данных conn

  • Хранимая процедура maxDecVolume

  • Пустые скобки, чтобы не обозначить входные параметры

  • Числовой тип данных Java® outputtype

outputtype = {java.sql.Types.NUMERIC};

results = runstoredprocedure(conn,'maxDecVolume',[],outputtype)
results = 

    [1x1 java.math.BigDecimal]

results возвращает массив ячеек, который содержит максимальный объем продаж как тип данных decimal Java.

Отобразите значение в results.

results{1}
ans =
 
35000 

Максимальный объем продаж в декабре 35,000.

Закройте соединение с базой данных conn.

close(conn)

Задайте хранимую процедуру под названием getSuppCount это считает количество поставщиков для заданного города путем выполнения этого кода. Эта процедура имеет один входной параметр cityName и один выходной аргумент suppCount. Этот код принимает, что вы используете базу данных Microsoft SQL Server.

CREATE PROCEDURE getSuppCount 
	(@cityName varchar(20),
	 @suppCount int OUTPUT)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	
	SELECT @suppCount = count(supplierNumber)
 FROM suppliers WHERE City = @cityName;
	
END
GO

Создайте соединение с базой данных Microsoft SQL Server conn использование драйвера JDBC. Для получения дополнительной информации смотрите Соединение с Базой данных. Затем вызовите хранимую процедуру getSuppCount использование соединения с базой данных conn. Входной параметр inputarg массив ячеек, содержащий вектор символов 'New York'. Тип данных выхода Java outputtype isnumeric.

inputarg = {'New York'};
outputtype = {java.sql.Types.NUMERIC};

results = runstoredprocedure(conn,'getSuppCount',inputarg,outputtype)
results = 

    [1x1 java.math.BigDecimal]

results массив ячеек, который содержит количество поставщика как тип данных decimal Java.

Отобразите значение в results.

results{1}
ans =
 
6.0000

В Нью-Йорке существует шесть поставщиков.

Закройте соединение с базой данных conn.

close(conn)

Задайте хранимую процедуру под названием productsWithinUnitCost это возвращает номер продуктов и описание для продуктов, которые имеют себестоимость единицы продукции в заданной области путем выполнения этого кода. Эта процедура имеет два входных параметра minUnitCost и maxUnitCost. Эта процедура имеет два выходных аргумента productno и productdesc. Этот код принимает, что вы используете базу данных Microsoft SQL Server.

CREATE PROCEDURE productsWithinUnitCost
	(@minUnitCost INT, 
	@maxUnitCost INT,
	@productno INT OUTPUT, 
	@productdesc VARCHAR(50) OUTPUT)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

 SELECT @productno = productNumber, @productdesc = productDescription
 FROM productTable
	WHERE unitCost > @minUnitCost AND unitCost < @maxUnitCost
END


GO

Создайте соединение с базой данных Microsoft SQL Server conn использование драйвера JDBC. Для получения дополнительной информации смотрите Соединение с Базой данных. Затем вызовите использование хранимой процедуры:

  • Соединение с базой данных conn

  • Хранимая процедура productsWithinUnitCost

  • Входные параметры inputargs задавать себестоимость единицы продукции между 19 и 21

  • Выходные Java типы данных outputtypes задавать типы числовых данных и типы данных String для номера продуктов и описания

inputargs = {19,21};
outputtypes = {java.sql.Types.NUMERIC,java.sql.Types.VARCHAR};

results = runstoredprocedure(conn,'productsWithinUnitCost',...
                             inputargs,outputtypes)
results = 

    [1x1 java.math.BigDecimal]
    'Snacks'                  

results возвращает массив ячеек, который содержит номер продуктов как тип данных decimal Java и описание продукта как строка.

Отобразите номер продуктов в results.

results{1}
ans =
 
15

Продукт с номером продуктов 15 имеет себестоимость единицы продукции между 19 и 21.

Отобразите описание продукта в results.

results{2}
ans =

Snacks

Продукт с номером продуктов 15 имеет описание продукта Snacks.

Здесь, узкая область значений себестоимости единицы продукции возвращает только один продукт. Если область значений себестоимости единицы продукции более широка, то больше чем один продукт может удовлетворить этому условию. Чтобы возвратить набор данных с многочисленными продуктами, используйте exec и fetch вызывать эту хранимую процедуру. В противном случае, runstoredprocedure возвращает только последнюю строку в наборе данных.

Закройте соединение с базой данных conn.

close(conn)

Входные параметры

свернуть все

Соединение с базой данных, заданное как connection объект создается с database функция.

Имя хранимой процедуры, заданное как вектор символов, который содержит имя хранимой процедуры, которую задают и инстанцируют в вашей базе данных.

Типы данных: char

Входные параметры, заданные как массив ячеек одного или нескольких значений для каждого входного параметра хранимой процедуры. Входные параметры могут быть только типами основных данных такой как дважды, вектор символов, логический, и так далее.

Типы данных: cell

Выведите типы, заданные как массив ячеек одного или нескольких типов данных Java для выходных аргументов хранимой процедуры. Некоторые драйверы JDBC не поддерживают весь java.sql.Types. Консультируйтесь со своей документацией драйвера JDBC, чтобы найти поддерживаемые типы. Совпадайте с ними к типам данных, найденным в вашей хранимой процедуре.

Пример: {java.sql.Types.NUMERIC}

Типы данных: cell

Выходные аргументы

свернуть все

Результаты хранимой процедуры, возвращенные как логический массив или массив ячеек.

runstoredprocedure возвращает логический 1 когда вызов хранимой процедуры возвращает набор данных. В противном случае, runstoredprocedure возвращает логический 0. Если хранимая процедура возвращает набор данных, используйте exec и fetch вызывать хранимую процедуру и получать набор данных. Для получения дополнительной информации см. Хранимую процедуру Вызова, Которая Возвращает Данные.

runstoredprocedure возвращает массив ячеек, когда вы задаете один или несколько типов данных выхода Java для выходных аргументов хранимой процедуры. Используйте индексацию массива ячеек, чтобы получить значения выходного аргумента.

Представленный в R2006b