执行SQL麻烦

时间:2017-09-28 08:54:58

标签: sql sql-server tsql

我尝试执行我的存储过程,但是我遇到了麻烦。

存储过程的一个参数定义如下:

  String maneuver[];
                            try {
                                JSONObject   json = new JSONObject(responseContent);
                                JSONArray json_Routes = json.getJSONArray("routes");
                                for (int i = 0; i < json_Routes.length(); i++) {
                                    JSONObject jsonRoute = json_Routes.getJSONObject(i);
                                    JSONArray jsonLegs = jsonRoute.getJSONArray("legs");
                                    for (int j = 0; j < jsonLegs.length(); j++) {
                                        JSONObject jsonsteps = jsonLegs.getJSONObject(j);
                                        JSONArray jsonmanr = jsonsteps.getJSONArray("steps");
                                        JSONArray Json_man=new JSONArray(String.valueOf(jsonmanr));
                                        maneuver=new String[Json_man.length()];
                                        for (int k =1; k < Json_man.length(); k++) {
                                            JSONObject jsonLeg = Json_man.getJSONObject(k);
                                            maneuver[k]=jsonLeg.getString("maneuver");
                                            Log.i("maneuver", maneuver[k]);

                                        }
                                    }
                                }
                            } catch (JSONException ew) {
                                ew.printStackTrace();
                            }

它是用户定义的表类型。

以下是上述类型的定义:

@MerchId [dbo].[intArray] READONLY,

以下是我尝试设置值并执行的方法:

CREATE TYPE [dbo].[intArray] AS TABLE ([num] [int] NULL)

但是我收到语法错误。

知道如何将值设置为exec @return_value = [dbo].[SPMerchData], @MerchId = [1,2,3] 变量来执行存储过程?

1 个答案:

答案 0 :(得分:5)

您应该声明一个变量并将其传递给您的过程:

DECLARE @t intArray;
INSERT INTO @t VALUES (1), (2), (3);

exec    @return_value = [dbo].[SPMerchData],
        @MerchId = @t